【发布时间】:2019-11-14 10:37:44
【问题描述】:
我的 reducer 中有一个初始状态,它是一个空对象
const initialState = {
postHistory: {},
loading: true
};
我注意到,当我从一个不同的组件运行一个函数时,该函数调度了这个初始状态实际上消失的动作。这给我带来了问题,因为在我的一个组件中,我试图检测此对象中数据的存在。
const obj = this.props.postHistory;
this.props.postHistory[Object.keys(obj)[0]] && this.props.postHistory[Object.keys(obj)[0]]
但是当动作被触发时,我可以在 redux 中看到对象的初始状态已经完全消失,只有加载值在那里。
TypeError: Cannot convert undefined or null to object
有没有其他人遇到过这样的问题?任何克服的建议欢迎!谢谢。
按照建议添加reducer代码:
import { POST_HISTORY } from '../actions/types';
const initialState = {
postHistory: {},
loading: true,
};
export default function(state = initialState, action){
const { type, payload } = action;
switch(type){
case POST_HISTORY :
return {
...state,
postHistory: payload.data,
loading: false
}
default:
return state;
}
}
【问题讨论】:
-
能否添加相关代码(reducer、action、你调用action的地方)?
-
您处理该操作的代码可能是错误的,并且正在替换您的状态而不添加以前的值,例如 postHistory
-
首先,学习安装 Redux Devtool Extension,这样您就可以在调用动作创建者之前/之后快速查看您的商店,这可能会对您有所帮助
-
@Stephanie Parker,当您从其他组件调用操作时,您能粘贴您的减速器代码的代码吗?
-
你不能直接在代码中改变prop值,你需要将prop值分配给某个变量,然后在值内部过滤或改变并显示在你的视图中。
标签: javascript reactjs redux