假设我有一个减速器,就像:
const initialState = [
{
accessToken: null,
isLoggedIn: false,
}
]
export default function my_reducer(state = initialState, action) {
switch (action.type) {
case LOGIN:
return state.merge(user: action) ---> how to handle this
输出应该是:
[
{
accessToken: null,
isLoggedIn: false,
user: {
name: 'some name',
email: 'some email'
}
]
在行动中,我正在通过JSON.stringify(response)
以前的数据不应更改,新数据应该更新
答案 0 :(得分:3)
要使用ES6中的状态创建新对象,我们可以使用spread运算符。喜欢这个
...
case ActionType.SUCCESS_GET_DATA : {
let newState = { ...state, [action.uniqueKey]: action.payload };
return state.merge(newState);
}
...
我将uniqueKey
部分作为变量,因为您需要一个唯一的州名称。
IMO这种语法比Object.assign
答案 1 :(得分:2)
您可以使用http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Pagination功能:
obj
答案 2 :(得分:1)
首先我看到你的状态实际上是一个数组,但我认为你需要一个对象吗?
所以它会是:
return {
...initialState,
user: {
name: '...',
surname: '...'
}
};
(需要Babel)所以使用spread运算符你可以:
return Object.assign({}, initialState, {
user: {
name: '...',
surname: '...'
}
});
或者,如果你没有通过Babel进行转换:
"download=0"
答案 3 :(得分:0)
使用ES6传播语法
...
case 'ACTION_TYPE_A': {
return { ...state, action.key: action.value };
}
...
如果'key'存在于原始状态,则会通过更新'key'来返回合并状态。
答案 4 :(得分:0)
Everything according to new Es6 format : )
总共addToDo reducer函数,其中将数据附加到以前的状态。然后您将获得新状态数据的输出:)
export const addToDo = (state, action) => {
const { name, email, phone, image,key } = action;
var data = [...state.data];
var newData = {
name: name, email: email, phone: phone, image: image,key:key
}
data.push(newData)
return(
state.merge({
data : data
})
)};
快乐的编码。