【问题标题】:React redux - pushed object in the state is not mapped but initialState isReact redux - 状态中的推送对象未映射但initialState是
【发布时间】:2021-04-04 20:21:10
【问题描述】:

我正在开发一些应用程序,您可以在其中保存有关视频的注释。我有一些 redux 问题,抱歉我不具体,但我不知道问题出在哪里。每次我使用“ADD_ITEM”操作时,在开发工具中一切正常,我可以看到值处于状态,但它们没有被映射,只有状态的初始值被映射。

这听起来很奇怪。为了向我的应用程序添加内容,我正在使用 Formik,所以问题可能出在我的表单中?这是该问题的视频:

https://user-images.githubusercontent.com/69200598/113505397-d9d41d00-953e-11eb-8e39-ccc60b4ce2cd.mp4

顺便说一句,不要试图在这个视频中理解我,我是波兰人:)

这是我实际映射的初始状态:

const initialState = {
  saves: [
    {
      id: 1,
      title: 'Hello meow',
      created: '18 may 2018',
      link: 'https://www.youtube.com/watch?v=-QmyosHh-kU',
      content: 'Nowy film gargamela!',
    },
    {
      id: 2,
      title: 'Hello meow',
      created: '18 may 2018',
      link: 'https://www.youtube.com/watch?v=-QmyosHa-kU',
      content: 'Nowy film!',
    },
    {
      id: 5,
      title: 'cos',
      created: 'cos',
      link: 'cos',
      content: 'cos',
    },
  ],
};

这是我的减速器:

switch (action.type) { 
   case 'ADD_ITEM': return { 
        ...state, 
        state: [...state.saves, action.payload],
   };

动作创建者:

export const addItem = (itemContent) => { 
     const getId = () => _${Math.random().toString(36).substr(2, 9)};
     return { type: 'ADD_ITEM', payload: { id: getId(), ...itemContent, }, }; 
};

(addItem 在 mapDispatchToProps 中作为 addItemAction 导入) mapDispatchToProps

const mapDispatchToProps = (dispatch) => ({ 
   addItem: (itemContent) => dispatch(addItemAction(itemContent)), 
});

formik 中提交所有内容的位置:

<Formik initialValues={{ title: '', link: '', content: '', created: '' }} onSubmit={(values) => { addItem(values); handleClose(); }} >

【问题讨论】:

    标签: javascript reactjs redux redux-actions redux-reducers


    【解决方案1】:

    问题是在 redux 中更新时,您没有写入正确的属性。您需要更新 saves 属性,而不是 state

    case 'ADD_ITEM': return { 
        ...state, 
        saves: [...state.saves, action.payload],
    };
    

    【讨论】:

    • 很高兴有帮助:-)
    猜你喜欢
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2017-12-14
    • 2020-03-07
    • 2017-08-12
    相关资源
    最近更新 更多