我将以下道具(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);