javascript – 如何在组件卸载时取消订阅redux store?如何装饰redux连接?

前端之家收集整理的这篇文章主要介绍了javascript – 如何在组件卸载时取消订阅redux store?如何装饰redux连接?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我将以下道具(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);

猜你在找的JavaScript相关文章