¿Cuáles son las ventajas de usar bibliotecas inmutables como immer.js o immutable.js? ¿Cuál es la diferencia entre realizar cambios en un borrador de un objeto o realizar cambios en un duplicado del objeto?
¿Hay alguna diferencia de rendimiento (¿y por qué?) entre los bloques de código a continuación?
Editar: Cambió el orden de console.log y el uso del operador de propagación en el segundo bloque de código en respuesta al comentario de vanowm.
const { produce } = require("immer"); let numArray = [1,2,3]; const nextState = produce(numArray, (draft) => { draft.push(4); }); console.log(nextState); // [ 1, 2, 3, 4 ] console.log(numArray); // [ 1, 2, 3 ] let numArray = [1,2,3]; const nextState = ((array) => { let newArray = [...array] newArray.push(4); return newArray; }); console.log(nextState(numArray)); // [ 1, 2, 3, 4 ] console.log(numArray); // [ 1, 2, 3 ]