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。组件中绑定事件触发。
推荐阅读
- 家中千万不要摆这些绿植,对身体不仅没有帮助,还会起反作用
- 耻骨|韧带痛、耻骨也痛,从来没有这么痛过,痛了两个多星期了!”厦门孕妈崩溃:“孕晚期各种不舒服
- 5.1声道片源对于没有5.1硬件系统的用户来说有意义吗
- 知乎有没有必要增加一个特别关注功能
- 孕妇到了预产期,小孩还没有入盆,请问是该等下去还是直接剖腹产
- 电视墙没有预留网线口,智能电视怎样上网
- 新浪微博创新基金投资了哪些团队
- 为啥到现在你还没有女朋友 ?
- 微博目前已经支持文本,图片,位置分享,为啥没有语音和视频呢微博的pm肯定想过这两种微博形态,但迟迟不做的原因到底是啥。是语音和视频不符合产
- 别透支丁真的流量
