在mapStateToProps中使用state和reducer时有什么不同。什么是正确的方法?

时间:2019-02-21 07:59:16

标签: reactjs redux

我已经看到很多教程在其mapStateToProps方法中都使用了这种方法。

(state.ReducerName)

const mapStateToProps = (state) => {
  return {
    invoices: state.IcmWebReducer,
 }
};

但这对我不起作用。对我有用的是这个

(state.objectParameterName)

const mapStateToProps = (state) => {
return {
    params: state.params,
    invoices: state.invoices
 }
};

我的减速器如下

const initialState = {
invoices : [],
params: {
    status: 'Pending',
    _sort: 'documentInfo.dueDate',
    _order: 'desc',
    q: ''
 }
};

const IcmWebReducer = (state = initialState, action) =>{
switch (action.type){
    case 'UPDATE_INVOICES':
        return Object.assign({}, state, {
            invoices: action.invoices
        });
    case 'UPDATE_PARAMS':
        return Object.assign({}, state, {
            params: action.params
        });
    default:
        return state;
 }
};

export default IcmWebReducer;

正确的方法是什么?这有什么区别?

1 个答案:

答案 0 :(得分:1)

(state.objectParameterName)是正确的方法。

mapStateToProps用于将redux状态用作connected组件中的props。减速器是一个纯函数,它只需要一些值并返回它。减速器根据触发的操作类型更新并返回状态。 即使您以某种方式在redux状态下定义了reducer并尝试使用它,这也是错误的做法。