javascript - 在 redux reducer 中更改状态的内部键

标签 javascript reactjs redux reducers

我有以下 reducer :

   const ListingReducer = (state={
    fetched:false
},action) => {
    if ( action.payload )
    {
        console.log("action.token",action.token);
        console.log("action.payload.profiles",action.payload.profiles);
    }
    switch(action.type)
    {
        case 'SET_LISTING_DATA':
            state = {
                ...state,
                [action.token] : action.payload,
                fetched : true
            }
            break;
        case 'APPEND_LISTING_DATA':
            // console.log("Previous state was: "state[action.token]);
            state[action.token]
             = {
                ...state[action.token],
                profiles : [...state[action.token].profiles,...action.payload.profiles],
                fetched : true
            }
            // console.log("Next state is: "+state[action.token]);

            break;      
    }
    return state;
}

Action :

  1. SET_LISTING_DATA:它将数据设置到 key action.token 中,其中有一个名为 profiles 的 key 。
  2. APPEND_LISTING_DATA:它将数据附加到状态的 profile 键中。

我可以在配置文件键中看到添加的配置文件,但它不会更新 View 。

配置文件位于:

state[action.token] ={name:y,data:xy,profiles:[id:x,{},{}],...}

最佳答案

看起来您需要更改 state[action.token] 但还要保留以前的状态数据,否则您将始终覆盖您的状态。

不过,直接更改/改变 state props 并不是一个好的做法。

case 'APPEND_LISTING_DATA':
  return {
    ...state,
    [action.token]: {
       ...state[action.token],
       profiles: [
         ...state[action.token].profiles,
         ...action.payload.profiles,
       ],
       fetched: true,
    }
  }

关于javascript - 在 redux reducer 中更改状态的内部键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47220483/

相关文章:

reactjs - 如何在 React 中创建带有 for 循环的选择框?

javascript - 5 星评级的前端 UI 图形机制

javascript - Oneliner 用于从 JS/ExtJS 4 中的 map 数组创建 map

Javascript - 为什么从函数返回 array.push(x) 不会将元素 x 插入数组?

javascript - 将信息存储为静态函数与静态对象之间的区别

reactjs - 在没有登录用户的 Azure AD 中调用 API 的 Web 应用程序的身份验证/授权场景是什么?

javascript - IE 6 以后添加 <option>

javascript - 使用 React.js 使用react-chartjs 在条形图中显示最新标签

reactjs - 我正在使用 Redux。我应该管理 Redux 存储中的受控输入状态还是在组件级别使用 setState?

javascript - React/Redux 无法迭代状态数组