我正在将以下 Prop (storeName)传递给我的组件:

<MyComponent reducerName="city" />

并且我想使用动态名称(this.props.reducerName)连接存储

例如
export default connect(state => ({
    some: state[this.props.reducerName]
}), { })(MyComponent);

如何装饰Redux Connect,或者我必须做什么?

我试图跳过Redux连接并使用store.subscribe
componentDidMount() {
    store.subscribe(() => {
        this.setState({some: store.getState([this.props.reducerName]});
    });
}

但是当我移到另一页时,会看到以下错误:



当组件将要卸载时,如何退订Redux存储?

最佳答案

connect具有第二个参数ownProps,它是一个包含所有传入 Prop 的对象。您将执行以下操作:

const mapStateToProps = (state, { reducerName = 'defaultReducer' }) => ({
  some: state[reducerName],
});

export default connect(mapStateToProps)(MyComponent);

09-16 23:31