我有一个侧边栏的简单容器。它看起来如下:
import Sidebar from '../components/sidebar';
import Actions from '../actions/sidebar';
export default connect(function mapStateToProps(state) {
return {
sidebar: state.sidebar,
device: state.device
}
}, function mapDispatchToProps(dispatch) {
return {
sidebar: bindActionCreators(Actions, dispatch)
}
}, function mergeProps(state, dispatch) {
return { state, dispatch }
})(Sidebar);
当我在我的组件实例上记录this.props
时,它似乎完全按预期工作。但是,当我尝试在this.props.state
中引用嵌套属性时,尽管状态发生了变化(完全确认状态发生了变化),但它似乎没有被动地更新。
import React, { Component, PropTypes } from 'react';
import Drawer from 'material-ui/Drawer';
export default class Sidebar extends Component {
render() {
const {
state: { sidebar: { open } },
actions: { sidebar: { toggle } }
} = this.props;
return (
<Drawer open={open}>
// ....
</Drawer>
)
}
}
当我在状态之外创建一个平面结构时,它似乎完全按照预期工作,但是当我在上面的示例中嵌套open
布尔值时,它永远不会更新,尽管状态正在适当更新。 / p>
如何使用react和redux在我的connect函数中使用嵌套状态属性?