Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Redux存储双重嵌套_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript Redux存储双重嵌套

Javascript Redux存储双重嵌套,javascript,reactjs,redux,Javascript,Reactjs,Redux,我在api调用后获得双重嵌套状态。给你 以下是我的行动 export const getUserSuccess=user=>({ 类型:获取用户成功, 用户, }); export const getUserFailure=错误=>({ 类型:获取用户失败, 错误, }); export const getUserRequest=()=>( 分派=>( axios.get('./user.json') .then(response=>dispatch(getUserSuccess(respo

我在api调用后获得双重嵌套状态。给你

以下是我的行动

export const getUserSuccess=user=>({
类型:获取用户成功,
用户,
});
export const getUserFailure=错误=>({
类型:获取用户失败,
错误,
});
export const getUserRequest=()=>(
分派=>(
axios.get('./user.json')
.then(response=>dispatch(getUserSuccess(response.data)))
.catch(错误=>dispatch(getUserFailure(错误)))
)

);如果此缩减器应使用新用户的完整表示更新状态(并丢弃旧数据),则应将新用户作为状态返回

你能试一试下面这句话吗

导出默认函数用户(状态={},操作){
开关(动作类型){
案例获取用户成功:
返回action.user;
案例获取用户失败:
返回{
……国家,
错误:action.error,
};
违约:
返回状态;
}

}
您需要传播为用户提供的数据,无需将其分配给
用户
。你的减速机已经在里面了

案例获取用户成功:
返回{
……国家,
…action.user
};根据这句话判断

如果我对用户数组进行尝试,那么该数组将被销毁

为什么不使用Object.assign()


假设有多个用户是可能的,为什么不在您的状态中将user属性作为一个数组来维护呢?

所有这些额外的逗号和省略号在reactjs库中都有效吗?否则,看起来糟糕的javascript就是你的罪魁祸首。我将在没有逗号的情况下得到错误。这种情况仅适用于单用户对象。我不同意这个答案,因为它不会从初始状态返回属性,如果您从操作接收的对象不包含用户还原器先前状态的属性,那么您正在以您可能不期望的方式修改对象的形状。这可能会导致连接的组件中出现错误,您希望定义的属性突然
未定义。我更愿意使用spread运算符或object assign将之前的状态与操作的有效负载结合起来。@YoWakita-我不同意,但这一切都取决于用例。如果这是跟踪一个用户的注销和作为单独用户登录,为什么您希望旧用户的属性保持在状态?我只需要做2个操作。第一个将从API获取单用户对象,第二个将从API获取多个用户的数组,我需要将它们分别保存在状态中。如果单独保存,则使用两个属性,或者如果API调用不相关,则我建议只使用单独的缩减器来处理用户数组。
return Object.assign({}, state, {user: [...state.user, ...action.user]})