我正在尝试让我的redux减速器执行以下操作:
但是,我输出的内容如下:
以下是我用来尝试此操作的代码。我试图在coinData数组中包含action.userHoldings,但是,它也会在不同的行上而不是在同一个对象中。我的目标是在coinData的第0个元素中获取userHoldings,类似于userHoldings在第一个图像中的投资组合数组中的方式。
import * as actions from '../actions/fetch-portfolio';
const initialState = {
coinData: [],
userHoldings: ''
};
export default function portfolioReducer(state = initialState, action) {
if (action.type === actions.ADD_COIN_TO_PORTFOLIO) {
return Object.assign({}, state, {
coinData: [...state.coinData, action.cryptoData],
userHoldings: action.userHoldings
});
}
return state;
}
答案 0 :(得分:2)
我想你想做这样的事情。
return Object.assign({}, state, {
coinData: [ {...state.coinData[0],cryptoData: action.cryptoDatauserHoldings: action.userHoldings}, ...state.coinData.slice(1) ],
});
}
slice(1)是获取除0之外的所有元素。对于第一个元素,您可以按照自己喜欢的方式构造对象。这应该可以解决问题。 Slice返回一个新的数组,不像splice / push或其他在减速器中使用的安全。 :)