Javascript Redux Reducer-如何将此状态保存为对象?(I&“x27;m得到“解析错误”)
我的代码如下所示:Javascript Redux Reducer-如何将此状态保存为对象?(I&“x27;m得到“解析错误”),javascript,object,object-literal,Javascript,Object,Object Literal,我的代码如下所示: 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;
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;
}
}
我在我的州里得到了这样的结果:
它可以工作,但这是一个数组。我想将其更改为object,如下所示:
case SAVE_SEARCH:
return [...state, { action.payloadTwo: action.payloadOne }];
因此searchTerm将是对象中的键,数据将另存为对象键值
但这段代码给了我一个错误:
我知道这对你来说是显而易见的。为什么我不能这样编码?为什么会出现“解析错误”
-------------- 编辑: 非常感谢@marekful的回答!现在它工作了强> My 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}
但是,您可以使用数组表示法将对象引用或函数返回值用作对象键(但它仍然必须是字符串):
在对象文字中,键只能是字符串文字(值可以是对象引用):
{“someKey”:object.property}
但是,您可以使用数组表示法将对象引用或函数返回值用作对象键(但它仍然必须是字符串):
使用ES6,您可以直接使用:
返回[…状态,{[action.payloadTwo]:action.payloadOne]}] 使用ES6,您可以直接使用:
返回[…状态,{[action.payloadTwo]:action.payloadOne]}] 删除操作。在属性nameremove操作中。在属性名Ok中,但我想我没有完全理解它,因为现在我得到了这个:0{[object]:“test”}好的,对不起,现在它工作了,我很快会在我的问题中编辑它!好的,但是我想我没有完全理解它,因为现在我得到了这个:0{[object]:“test”}好的,对不起,现在它工作了,我很快会在我的问题中编辑它!
let o = {};
o[action.payloadTwo] = action.payloadOne;
return [...state, o];