Redux Reducer - 如何将此状态保存为对象? (我得到 "Parsing Error")

Redux Reducer - how can I save this state as object? (I'm getting "Parsing Error")

我的代码如下所示:

import { SAVE_SEARCH } from '../actions/index';

export default function (state = [], action) {
  switch (action.type) {
    case SAVE_SEARCH:
      return [...state, action.payloadTwo, action.payloadOne];
    default:
      return state;
  }
}

在我的状态下我得到了这样的结果:

有效,但这是一个数组。我想将其更改为对象,如下所示:

    case SAVE_SEARCH:
      return [...state, { action.payloadTwo: action.payloadOne }];

因此 searchTerm 将是对象中的键,数据将保存为对象键值。

但是这段代码给我一个错误:

我知道这对你来说是显而易见的。为什么我不能这样编码?为什么我得到 "Parsing Error"?


----------------

编辑:

非常感谢@marekful 的回答!现在可以使用了!

我的action.js代码:

import axios from 'axios';

export const SAVE_SEARCH = 'SAVE_SEARCH';

export function searchTest(query) {
  const githubApi = `https://api.github.com/search/repositories?q=${query}&sort=stars&order=desc`;
  const request = axios.get(githubApi);
  return (dispatch) => {
    request.then(({ data: dataFromGithub }) => {
      dispatch({ type: SAVE_SEARCH, payloadOne: query, payloadTwo: dataFromGithub });
    });
  };
}

减速器代码:

import { SAVE_SEARCH } from '../actions/index';

export default function (state = [], action) {
  switch (action.type) {
    case SAVE_SEARCH:
      const o = {};
      o[action.payloadOne] = action.payloadTwo;
      return [...state, o];
    default:
      return state;
  }
}

结果:

在对象字面量中,键只能是字符串字面量(值可以是对象引用):{"someKey": object.property}

但是,您可以使用对象引用或函数 return 值作为使用数组表示法的对象键(但它仍然必须是字符串):

let o = {};
o[action.payloadTwo] = action.payloadOne;
return [...state, o];

在 ES6 中你可以直接使用: return [...state, { [action.payloadTwo]: action.payloadOne] }];