所有视图都应该是无状态组件吗?

Posted

技术标签:

【中文标题】所有视图都应该是无状态组件吗?【英文标题】:Should all Views be stateless components? 【发布时间】:2018-04-24 13:05:07 【问题描述】:

假设我们必须为切换按钮编写自定义视图。

切换按钮通常具有以下两个特征: - 是否可点击(即会以某种方式报告点击事件) - 有一个状态(开/关)

我们应该把让切换按钮在点击时切换状态的代码放在哪里? 它是否属于自定义视图本身? 视图是否应该完全“愚蠢”并且只报告让业务逻辑设置其开/关状态的点击(例如,通过视图上的 setState() API)。 这两种方法的优缺点是什么?

假设在我们的代码库中,我们希望尽可能让业务逻辑处理应用程序状态,让视图只处理它们的“渲染”:上述问题的答案在这方面将如何变化?

【问题讨论】:

【参考方案1】:

我们应该把制作切换按钮的代码放在哪里 点击时切换状态?

一个Widget运行在设备的主屏幕上,所以需要用PendingIntent调用业务逻辑

here 你可以找到一个有效的解释,而且这个blog 给出了一些工作示例,甚至更复杂

Clickable widgets in android

【讨论】:

我使用“UI 小部件”一词的一般含义(不是 Android)。所以在android中意味着“View”(或扩展android.view.View的类)。我会尝试相应地更改问题标题。 当然,让我知道是否要使用 Pending Intent。

以上是关于所有视图都应该是无状态组件吗?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP/2 是无状态协议吗?

react.js基础

在 React 中,一个类组件可以是无状态的,而现在使用 Hooks 一个函数组件可以是有状态的吗?

当组件是无状态功能时,通过显示名称查找组件,使用 Enzyme

如果资源服务器应该是无状态的,如何使用 websocket 将消息发送到队列

Blazor中的无状态组件