我有以下代码,我想在一定条件下操作安全如何将目标状态添加到状态对象?我尝试了两个选项都没有工作
const trueArr = { a: true, b: true, c:true };
const falseArr ={ a: false, b: false, c: false };
setSate({
...iniciSate,
[foo == 'test' ? trueArr : falseArr]
});
setSate({
...iniciSate,
{foo == 'test' ? ...trueArr : ...falseArr}
});
这是一个javascript问题,不是React。
有条件地将这个或那个对象的属性添加到另一个对象(使用spread):
const state = {x:1}
const trueArr = { a: true, b: true, c:true }
const falseArr ={ a: false, b: false, c: false }
console.log(
{...state, ...(true ? trueArr : falseArr)},
// or "false"
{...state, ...(false ? trueArr : falseArr)}
)
当你写...(true ? trueArr : falseArr)
时,那么周围的括号首先求值它,所以展开运算符(...
)"知道";它应用于两个选项中的哪一个(计算结果)
你很接近了:
setSate({
...iniciSate,
(foo == 'test') ? ...trueArr : ...falseArr
});