Estoy tratando de declarar una matriz compleja usando el gancho de reacción como
const [strategy, setStrategy] = useState([leg]);dónde
const leg = { entry: { conditions: [], actions: [""], }, exit: { conditions: [], actions: [""], }, };y
const condition = (param) => { return { param, val: "" }; };Ahora, el siguiente código para agregar una pierna en la matriz funciona bien
const addLeg = () => { const temp_strategy = [...strategy]; temp_strategy.push(leg); setStrategy(temp_strategy); };Ahora, quiero agregar una condición en una de las piernas cuyo índice se da (en un clic de botón en el front-end), el siguiente es el código que estoy intentando
const addCondition = (index, trigger, condition_param) => { // index is for leg // trigger is either 'entry' or 'exit' const temp_strategy = [...strategy]; temp_strategy[index][trigger]['conditions'].push(condition(condition_param)); setStrategy(temp_strategy); };Ahora si en algun momento la estrategia es tener 3 piernas y si llamo
addCondition(1, 'entry', 'and')luego agrega la condición anterior a las 3 patas pero dentro del objeto 'entrada'.
Mi duda es por qué no funciona para el índice pero sí para el disparador donde índice y disparador son como
temp_strategy[index][trigger]['conditions'].push(condition(condition_param));Hay una hermosa biblioteca especialmente construida para tal escenario immer.js . Vaya a ver esto en https://www.npmjs.com/package/immer