使用redux时应该使用this.setState()吗?


111

this.setState()使用redux时应该使用吗?还是应该一直在派遣行动并依靠道具?


1
具有状态的某些组件没有错。
zerkms

3
这完全取决于使用状态的位置。认为redux商店是全球性的。任何不需要全局的东西都可以对组件及其子组件保持私有。
azium

Answers:


139

明确使用setState会用于具有本地显示状态但与全局应用程序无关的UI组件。例如,表示某个下拉菜单是否处于活动状态的布尔值不需要处于全局状态,因此可以更方便地由菜单组件的状态进行控制。

其他示例可能包括层次结构的手风琴显示中的线的折叠/展开状态。或选项卡导航中当前选择的选项卡。但是,在这两个示例中,您仍然可以选择全局处理UI状态。例如,如果您想将扩展/折叠状态持久保存在浏览器存储中,以便通过页面刷新来保存它,这将是必要的。

实际上,通常最简单的方法是使用局部状态实现此类UI元素,然后根据需要将其重构为全局状态。


23
为了解决这个问题,相关的Redux FAQ条目强调使用setState完全可以redux.js.org/docs/faq/…–
markerikson

2
如果您要进行切换或使用服务器端渲染,我认为您应该始终使用Redux
neaumusic

Redux FAQ链接已更新至redux.js.org/faq/organizing-state
AnandShanbhag
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.