首页 文章

React Redux组件不会在状态更改时重新呈现

提问于
浏览
0

如何确保触发状态更改并将其捕获到组件中?

我的应用程序有一个动作,它是在过滤器组件中单击时触发的 . 此过滤器执行搜索并返回新产品(基于过滤器) .

该操作有效并使用React Chrome扩展程序,我可以看到产品的全局状态发生变化 . 但是我无法在我的shopComponent中获取新状态,这将根据新产品状态更改显示的产品.. :(

class shopProduct extends Component {

    constructor(props) {
        super(props);
        this.state = {...localStateItems }
    }

    render() {
        if(this.props.products != undefined) {
          console.log('not undefined: ', this.props.products);
          // NOTHING IS SHOWING
        }
        console.log('shopProducts Render: ', this.props);
        // NOTHING IS SHOWING

        return (
            ...Some new products
        )
    }
}

const mapStateToProps = (state, ownProps) => ({
    cart: state.cart,
    products: state.products
});

shopProduct.propTypes = {
    productSearch: PropTypes.func.isRequired,
    products: PropTypes.object
};

export default connect(mapStateToProps, { productSearch, products })(shopProduct);

我是否正确地将其映射到shopProduct组件?

2 回答

  • 0

    我想你误解了传递给 connect 的第二个参数应该是什么 . 根据the docs它应该mapDispatchToProps . 您试图传递propTypes,这不是第二个参数所期望的 . 您可能想阅读what mapDispatchToProps is for .

  • 1

    好 . 所以它没有呈现的原因是我们使用 immutable JS .
    所以对于有问题的其他人 . 检查您的应用是否正在使用该应用 .

    只需用 state.get('objectName') 引用该对象

    对:

    const mapStateToProps = (state) => ({
       products: state.get('products')
    });
    

    错误:

    const mapStateToProps = (state, ownProps) => ({
        cart: state.cart,
        products: state.products
    });
    

相关问题