我的应用中有两个容器组件。我刚开始做出反应,redux并认为容器组件从其各自的reducer中获取状态对象,以便它可以映射到组件的道具。
我控制台记录了reducer发送的状态,并看到状态对象包含我的应用程序中另一个reducer发送的数据。我认为它应该只从相应的reducer获取数据,因为reducer是将数据发送到容器组件的。
我不知道自己做错了什么或是否有问题。
减速器:
export default function(state=null, action){
console.log(action);
switch(action.type){
case 'BOOK_SELECTED':
return action.payload
}
return state;
}
容器组件:
function mapStateToProps(state){
console.log("state from reducer",state); //contains data from the other reducer as well
return {
bookDetail : state.bookDetail
}
}
export default connect(mapStateToProps)(BookDetail);
答案 0 :(得分:1)
容器和减速器没有连接"。这就是mapStateToProps
存在的原因。
Redux不知道容器所需的状态部分,因此,在mapStateToProps
中,提供了所有状态,并且每个状态都需要它。在您的情况下,您的容器需要state.bookDetail
。
希望它有所帮助。
答案 1 :(得分:0)
如果查看react-redux文档,您会看到mapStateToProps
收到完整商店数据作为第一个参数。正如你所做的那样,将它切换到连接组件所需的道具是你的工作。您的组件只会从州获得bookDetail
作为道具。
所以你的代码很好,虽然我会用default clause在reducer中重写那个switch语句。