将道具传递到Redux初始状态

时间:2019-07-26 17:58:01

标签: redux react-redux redux-thunk

我想根据从Home.js获得的现有道具在reducer.js中设置初始状态

我试图调用home: this.props.homedata来设置初始状态,但是它不起作用。

import { COMMENT_SHOW, LIKE_SHOW, HOMEDATA_SHOW } from '../actions/types';

const INITIAL_STATE = {
    wallid: '',
    comment: '',
    like: '',
    home: this.props.homedata
};
export default (state = INITIAL_STATE, action) => {
........///////////
}

Reducer.js

应用加载后,我希望在家中获得与homedata状态相同的数据

2 个答案:

答案 0 :(得分:0)

我认为不可能将prop传递给减速器。您可以做的是拥有一个数据集文件,例如Car.update({"active": true}, {"$set":{"active": false}}, {"multi": true} ) Car.update({ _id: { $in: carlist } },{ $set: { active : true } }) ,然后导出数据。将其导入到reducer文件中,并将其设置为初始数据。

data.js

如果您不希望在应用程序运行时修改示例数据。也许您需要它来重置家庭数据,您需要先克隆数据,然后再将其传递到初始状态。

答案 1 :(得分:0)

减速器没有props。您可能是从React捡起的。

Reducer应该根据调度的操作来更新Redux状态。要将状态更新为homedata,您可以分派操作并将reducer中的数据作为新状态返回。

// action to dispatch
{
   type: "UPDATE_HOME",
   payload: homedata
}

// Reducer.js
const INITIAL_STATE = {
    wallid: '',
    comment: '',
    like: '',
    home: {}
};
export default (state = INITIAL_STATE, action) => {
  switch(action.type) {
    case "UPDATE_HOME":
      return {
        ...state,
        home: action.payload
      };
    default:
      return state;
  }
}