微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

原文地址:https://www.jb51.cc/js/156237.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐