如何在 Redux 中存储具有单独属性的对象
How to store an object with separate properties in Redux
对 Redux 还是很陌生,我已经很擅长将单个值保存到存储中,但我对如何在一个对象上存储多个相关属性有点困惑。
这似乎与 Object.assign(...
的使用有关,但我不太确定该怎么做。
保存附加属性的正确方法是这样的吗:
export default (state = {}, action) => {
switch (action.type){
case actionTypes.SAVE_ENGAGEMENT:
return {
...state,
engagement: Object.assign({}, action.engagement)
};
default:
return state;
}
};
基本上我想要一个在我的商店中具有类似属性的对象:
{
'engagement': 5,
'opened_from_push': true,
'first_accessed_time': 1561927084
}
理想情况下我也能更新它
基本上,Redux 要求您不改变状态,而是 return 一个新状态。
所以我认为你只需要这样做。
export default (state = {}, action) => {
switch (action.type){
case actionTypes.SAVE_ENGAGEMENT:
return {
...state,
engagement: action.payload,
};
case actionTypes.SAVE_OPENED_FROM_PUSH:
return {
...state,
opened_from_push: action.payload,
};
case actionTypes.FIRST_ACCESSED_TIME:
return {
...state,
first_accessed_time: action.payload,
};
default:
return state;
}
};
您也可以对传入对象使用扩展运算符:
const state = {
engagement: 5,
greeting: true
};
const engagement = {
engagement: 6,
opened_from_push: true,
first_accessed_time: 1561927084
}
return { ...state, ...engagment };
请注意,参与度排在第二位,这将覆盖键,因此您的 state.engagement
在此示例中最终将成为 6。
对 Redux 还是很陌生,我已经很擅长将单个值保存到存储中,但我对如何在一个对象上存储多个相关属性有点困惑。
这似乎与 Object.assign(...
的使用有关,但我不太确定该怎么做。
保存附加属性的正确方法是这样的吗:
export default (state = {}, action) => {
switch (action.type){
case actionTypes.SAVE_ENGAGEMENT:
return {
...state,
engagement: Object.assign({}, action.engagement)
};
default:
return state;
}
};
基本上我想要一个在我的商店中具有类似属性的对象:
{
'engagement': 5,
'opened_from_push': true,
'first_accessed_time': 1561927084
}
理想情况下我也能更新它
基本上,Redux 要求您不改变状态,而是 return 一个新状态。 所以我认为你只需要这样做。
export default (state = {}, action) => {
switch (action.type){
case actionTypes.SAVE_ENGAGEMENT:
return {
...state,
engagement: action.payload,
};
case actionTypes.SAVE_OPENED_FROM_PUSH:
return {
...state,
opened_from_push: action.payload,
};
case actionTypes.FIRST_ACCESSED_TIME:
return {
...state,
first_accessed_time: action.payload,
};
default:
return state;
}
};
您也可以对传入对象使用扩展运算符:
const state = {
engagement: 5,
greeting: true
};
const engagement = {
engagement: 6,
opened_from_push: true,
first_accessed_time: 1561927084
}
return { ...state, ...engagment };
请注意,参与度排在第二位,这将覆盖键,因此您的 state.engagement
在此示例中最终将成为 6。