react 没有从属关系的组件间怎样setState ?

不管什么关系,一个组件不应该直接修改另一个组件的state,而应该使用 props,或者触发redux action。
■网友
React中组件的state是内部的状态,外部是绝对不可能直接调用setState来修改的,只能通过props来传递信息给另一个组件。
如果A和B非父子组件,要传递消息也不是不可能。
1. 土办法,通过全局变量;
【react 没有从属关系的组件间怎样setState ?】 2. 通过callback函数作为prop的传递,比如A和B有共同的父组件C,C穿针引线,把把一个函数传递给A和B,让A调用这个函数从而通知B。
3. 通过context;
4. 通过状态管理框架,比如Redux,这是最易于管理的方法。


■网友
刚刚入门react,我的理解是这样,没有redux的时候父调子用props,兄弟要找到共同父节点去回调。一般超过两个层级就该考虑用redux了,那个状态开始有点绕,不能一眼看明白了。题主的这种情况不用redux需要把他们通过一个共同父节点用回调。推荐还是用redux之类的,简单明了。
■网友
使用 react.eval 可以实现你的目的,不必使用redux,也不必进行状态提升
基于发布订阅模式实现。
https://github.com/sunluna/react.eval.bookhttps://github.com/sunluna/react.eval

■网友
把A和B放到一个父组F件里,在F里设置状态。参考官方文档,关键字lift state。
■网友
使用redux或alt等,统一管理state。组件中绑定事件触发。


    推荐阅读