从mapStateToProps

时间:2018-02-20 06:38:53

标签: reactjs redux

Container ListRegisteredProducts使用:

将props传递给纯功能组件TableView
const mapStateToProps = state => {
    return {
        products: state.products
    }
}

连接函数如下所示:

const ListRegisteredProducts = connect(
    mapStateToProps,
    mapDispatchToProps
)(TableView)

但是当我去构建道具时:

const TableView = ({products}) => (

...

TableView.propTypes = {
    products: PropTypes.arrayOf(
        PropTypes.shape({
            id: PropTypes.number.isRequired,
            name: PropTypes.string.isRequired
        })
    )
}

我收到一个错误,说产品不是数组,而是对象。

编辑:当我在TableView的参数中记录我已经解构的products时,我看到了我的应用的整个状态:

{isFetching: false, products: Array(0)}

2 个答案:

答案 0 :(得分:0)

根据products的定义,它是一个对象数组。

从这个定义React做 typechecking

products: PropTypes.arrayOf(
        PropTypes.shape({
            id: PropTypes.number.isRequired,
            name: PropTypes.string.isRequired
        })
    );

但是看起来你正在从products传递mapStateToProps是对象的类型。

答案 1 :(得分:0)

i