Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[react] 什么时候使用状态管理器? #953

Open
haizhilin2013 opened this issue Jul 18, 2019 · 18 comments
Open

[react] 什么时候使用状态管理器? #953

haizhilin2013 opened this issue Jul 18, 2019 · 18 comments
Labels
react react

Comments

@haizhilin2013
Copy link
Collaborator

haizhilin2013 commented Jul 18, 2019

[react] 什么时候使用状态管理器?

@haizhilin2013 haizhilin2013 added the react react label Jul 18, 2019
@haizhilin2013 haizhilin2013 changed the title [react] 使用时候使用状态管理器? [react] 什么时候使用状态管理器? Jul 19, 2019
@P0067407
Copy link

通过提升单个组件的复杂度,实现组件通讯

@Rahim-Chan
Copy link

同问!
1.页面级组件间不需要通讯,共享状态。
2.没有全局的变量共享。
3.小型应用,可通过context满足简单需求

@cyj1209
Copy link

cyj1209 commented Nov 7, 2019

摘抄阮老师的
从项目的整体看

  1. 用户的使用方式复杂
    2.不同身份的用户有不同的使用方式(比如普通用户和管理员)
    3.多个用户之间可以协作
    4.与服务器大量交互,或者使用了WebSocket
    5.View要从多个来源获取数据
    从组件角度看
    1.某个组件的状态,需要共享
    2.某个状态需要在任何地方都可以拿到
    3.一个组件需要改变全局状态
    4.一个组件需要改变另一个组件的状态

@langhuanyudong
Copy link

  1. 有相当大量的,随时间变化的数据
  2. state需要有一个单一可靠数据源
  3. 所有state放在顶层组件已经无法满足需求了

@nailaowang
Copy link

  1. 要维护大量与服务器交互的数据
  2. 数据要多个页面共享
  3. 组件状态要多个组件内共享

@hdugaojing
Copy link

当状态提升提升不能够满足开发需求,状态树并不总是以一种线性的,单向的方式流动。就需要使用状态管理器。

@wjrhyw
Copy link

wjrhyw commented Apr 17, 2020

从组件的角度考虑:组件间的状态共享过多,与服务器交互的数据过多,并且组件层级过深,状态提升或者context已经不适用的情况下,就可以考虑使用状态管理器

@cuideqi
Copy link

cuideqi commented Jun 28, 2020

当程序中出现大量不相干组件需要互相通信而现有的组件间通信技术(状态提升、context、storage等)不能很好的解决时,一个状态管理器作为中间者,可以降低组件间通信的复杂度。(购房者、买房者、中介)一样的场景。

@JR-noble
Copy link

所以面试的时候该怎么回答,我是刚入门的小菜鸡,怎么样回答会比较通俗易懂又容易记住答案呢

@wind8866
Copy link

wind8866 commented Feb 4, 2021

全局状态可以使用React.component、Hooks或者全局变量,这几方式都有一个缺陷,子组件可以任意的调用,去改变全局状态。需要有一种机制去限制,让数据的修改、获取通过统一的状态管理器接口去调用,如果出现问题,顺着状态管理器的数据流向去寻找出现问题的地方。


上面说的从组件的角度考虑,都已不再适用,阮一峰老师的文章是16年的。如果仅仅是需要组件间状态通信,可以适用Hooks,如果组件间间通信逻辑很复杂,可以使用hooks(可选)配合redux来管理。
我理解现在的redux或说flex的优势就是我上面说的,便于数据管理,而不是为了解决React原来组件间通信困难的自身缺陷。

@sunyongjian
Copy link

sunyongjian/blog#36

@ocian
Copy link

ocian commented Oct 10, 2021

在组件树超过 3 级的时候,需要在任意位置读取状态,或者在任意位置修改状态的时候,就需要状态管理器
状态提升只适合从子组件到父组件的提升

@zoulipeng
Copy link

在我看来,状态管理器的使用即:抽离出状态从UI外部进行统一统一管理.
从组件角度来看:
1.某个组件需要改变全局状态
2.某些状态需要在任何地方都能获取的到
3.一个组件需要改变另一个组件的状态
4.某个组件的状态需要进行共享
从用户使用方式复杂角度:
1.不同身份用户有不同使用方式如:普通用户和管理员
2.多个用户之间可以协作
3.与服务器大量交互,或使用websocket.

@nailaowang
Copy link

nailaowang commented Feb 3, 2022 via email

@liuhui000829
Copy link

啥呀

@nailaowang
Copy link

nailaowang commented Apr 23, 2022 via email

@YahefuYusufu
Copy link

When the complexity of an application is such that local component state is not feasible,

@nailaowang
Copy link

nailaowang commented Jan 7, 2023 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
react react
Projects
None yet
Development

No branches or pull requests