gpt4 book ai didi

javascript - 我可以只返回状态对象的一部分而不是整个状态对象的新副本吗

转载 作者:行者123 更新时间:2023-11-29 21:37:18 25 4
gpt4 key购买 nike

我有以下初始状态,它由平面属性和一个深层嵌套属性 searchStatus 组成:

var searchStatus = Immutable.fromJS({
requesting: {
component: {tenants: false, platforms: false},
tenant: false,
hdf: false,
cluster: false
}
});

const initialState = {
selectedItem: null,
searchQuery: '',
searchStatus: searchStatus
};

我有一个适用于这种状态的 reducer :

function reducer(state = initialState, action) {
switch (action.type) {
case GET_TENANT_TEMPLATES_LISTING_REQUEST:
var status = state.searchStatus.updateIn(['requesting', 'component', 'tenants'], function () {
return true;
});
return assign({}, state, {
searchStatus: status
});

是否可以仅返回状态的 searchStatus 部分的新副本,然后将其合并到状态中,还是应该始终返回整个状态副本?

更新:

case GET_TENANT_TEMPLATES_LISTING_REQUEST:
var copy = assign({}, state);
copy.searchStatus.requesting.component.tenants = true;
return copy;

最佳答案

您必须每次都复制状态对象(请注意可以保留内部引用,因此它并不像您想象的那样低效),这就是您对 assign 所做的(我只能假设它是 Object.assign())

的简写

您对 assign 的调用将从状态复制所有属性,然后从 { searchStatus: status } 复制到一个空对象,有效地复制您的整个状态,然后应用更改。

你不能改变传递给函数的状态,你还必须从函数返回一个完整的状态对象。

关于javascript - 我可以只返回状态对象的一部分而不是整个状态对象的新副本吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34506892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com