【问题标题】:Redux initial state disappears on actionRedux 初始状态在操作时消失
【发布时间】: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


【解决方案1】:

首先控制台你的payload.data ....然后检查你得到的数据是“JSON”格式我们的字符串格式。如果数据是“对象”形式,那么它将存储在你的POSTHISTORY中,如果您的数据是“json”格式,那么它不会以初始状态存储数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2018-09-18
    • 2019-07-04
    • 1970-01-01
    相关资源
    最近更新 更多