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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...