求助react-redux下的一个问题

#1

新手求助,有一个组件,传入了不同的props生成了多个"实例",如果用redux来管理这些组件的state,如果一个"实例"的state变化了,其他"实例"的state也会相应变化,这个怎么解决呢?或者说怎么能够使得redux的store中把这类"实例"的state分开存储起来,然后action触发对应组件的state 变化呢

#2

使用Object.assign 或者用return {…state, action.data}这类的写法,如果数据层次较多,比如a.b.c这样,使用immutable

#3

我遇到的问题好像和您说的有点不一样=-=,我的意思是怎么来管理多个来自同一组件原型的不同"实例"状态,比如我写了一个table组件,然后有多个组件引用了这个table组件,只是传了不同的props,然后这些组件都由redux来管理state,我想知道怎么把这些组件不同的state标识出来分开存储。比如我做了个filter操作,由于现在是这些组件共用了一个state,所以一个filter的 action会被这些组件都捕获到, 然后全部变化了=-=

#4

如果我没理解错你的意思的话,应该通过多个reducers解决问题,这里我们用a.b两个reducer,虽然你派发相同的action,但不同的reducer里,你设置不同的规则,返回的state肯定是不同的。所以只要你在不同的reducer中对相同的action.type做出不同的处理就行,这个时候就需要你在mapStateToProps配置一下,比如你的A容器组件引用了一个c小组件,B容易组件也引用了一个c小组件,这个时候A可以在mapStateToProps中return(a:state.a) 这样变量a(也就是return的key a)就拿到了reducer a中的state,同理B可以使用return(b:state.b) 这样变量b就拿到了reducer b中的state,当然了,return写法可以灵活应变,我个人喜好这么写

而你现在写的状态,也就是共用同一个reducer的state的状态,比如我们平时用的收藏功能,你在购物的时候收藏,浏览的时候可以收藏,详情页也可以收藏,这个时候共用state就起到了应有的作用

组件和reducer并不是11对应的关系,我A组件可以用很多reducer,得到了不同reducer的state,B组件也是一样的。

Action 请求来的数据给了reducer,reducer执行后数据没有映射到store上是为什么? 这个问题上,你可以看看楼主的问题,然后想想看如果是你你会怎么解决呢?最后几个答主答的都是对的,这应该更有助于你对reducer和state的理解

可能语句组织不太好,但还是希望可以帮到你

#5

非常感谢您的耐心解答,收获颇丰,感谢~

#6

@Mess1ah 有兴趣可以看一下我写的示例,也是融入了redux的,redux管理也是按模块来划分,希望能对你有帮助,如果觉得不错,记得帮star
示例地址:https://github.com/meibin08/react-redux ,也可以直接先看示例