Tengo el siguiente código y quiero manipular el estado bajo ciertas condiciones, ¿cómo agregar el estado objetivo al objeto de estado? Probé opciones de remolque, ninguna ha funcionado
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} });
Esta es una pregunta de javascript y no de React.
Para agregar condicionalmente las propiedades de este o aquel objeto a otro (usando 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)} )
Cuando escribe ...(true ? trueArr : falseArr)
, entonces los paréntesis que lo rodean lo evalúan primero, por lo que el operador de propagación ( ...
) "sabe" a cuál de las dos opciones se aplica (el resultado evaluado)
Estabas muy cerca:
setSate({ ...iniciSate, (foo == 'test') ? ...trueArr : ...falseArr });