为什么在单击操作后Redux reducer返回未定义?

时间:2018-11-22 11:43:01

标签: reactjs redux react-table

我有一个React-table,我在其中传递来自reducer的initialState的数据,如下所示:

const getData = () => {
    return {
        data: [{},{},{}]
    }
}

const initialState = getData();

const ipReducer = (state = initialState, action) => {

    if (action.type === 'CHANGE_IP_STATUS') {
        let newState = Object.assign({}, state);
        return { newState }

    } else {
        return state;
    }
}

export default ipReducer;

getData()将从服务器获取数据。

我在表行中有切换器,可以更改表数据状态。因此,我执行redux动作来更改表的状态。但是,当操作完成后,表表将获取undefined数据。

这是我的桌子:

<div>
     <ReactTable
         data={this.props.data}
         columns={columns}
     />
</div>

这是我到道具地图的状态:

const mapStateToProps = (state) => ({
    data: state.ipTable.data,
})

console.log()中我看到我的ipReducer返回了有效的数据对象。但是为什么执行更改状态后该对象没有出现在我的表组件中?

1 个答案:

答案 0 :(得分:1)

您应该返回return { newState }而不是返回newState,因为它已经是从更新状态创建的对象

const ipReducer = (state = initialState, action) => {

    if (action.type === 'CHANGE_IP_STATUS') {
        let newState = Object.assign({}, state);
        return newState;

    } else {
        return state;
    }
}