我将以下道具(storeName)传递给我的组件:
- <MyComponent reducerName="city" />
我想用动态名称连接到商店(this.props.reducerName)
例如
- export default connect(state => ({
- some: state[this.props.reducerName]
- }),{ })(MyComponent);
如何装饰redux连接,或者我必须做什么?
我试图跳过redux connect并使用store.subscribe
- componentDidMount() {
- store.subscribe(() => {
- this.setState({some: store.getState([this.props.reducerName]});
- });
- }
Warning: setState(…): Can only update a mounted or mounting
component. This usually means you called setState() on an unmounted
component. This is a no-op.
如何在组件卸载时取消订阅redux store?
解决方法
connect具有ownProps的第二个参数,该参数是包含所有传入道具的对象.你会做这样的事情:
- const mapStateToProps = (state,{ reducerName = 'defaultReducer' }) => ({
- some: state[reducerName],});
- export default connect(mapStateToProps)(MyComponent);