用三元制分散两个不同的对象



我有以下代码,我想在一定条件下操作安全如何将目标状态添加到状态对象?我尝试了两个选项都没有工作

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
});

最新更新