This is a quick demo of Immer.js
Instructions
npm installnode index.js
This is a quick demo of Immer.js
Instructions
npm installnode index.js| const { produce } = require('immer'); | |
| const tasks = [ | |
| {id: 1, name: 'Record Video', done: false}, | |
| {id: 2, name: 'Edit Video', done: false} | |
| ]; | |
| // DARK ARTS | |
| const modifiedTasks = produce(tasks, (draft) => { | |
| draft.push({id: 3, name: 'Publish Video', done: false}); | |
| draft[0].done = true; | |
| }); | |
| console.log('Tasks', tasks); | |
| console.log('Modified', modifiedTasks); | |
| console.log('Tasks Are Equal:', tasks === modifiedTasks); | |
| console.log('First Tasks are Equal: ', tasks[0] === modifiedTasks[0]); | |
| // const modifiedTasks = tasks.map((task, i) => { | |
| // return i === 0 ?{...task, done: true} : task; | |
| // }); | |
| // const modifiedTasks = [ | |
| // ...tasks.slice(0, 0), | |
| // {...tasks[0], done:true}, | |
| // ...tasks.slice(1) | |
| // ]; | |
| // tasks[0].done = true; | |
| // Might Corrupt the initial data | |
| // tasks before === tasks after |
| { | |
| "name": "immer-demo", | |
| "version": "1.0.0", | |
| "description": "", | |
| "main": "index.js", | |
| "scripts": { | |
| "test": "echo \"Error: no test specified\" && exit 1" | |
| }, | |
| "keywords": [], | |
| "author": "Joel Shinness <me@joelshinness.com> (http://joelshinness.com)", | |
| "license": "ISC", | |
| "dependencies": { | |
| "immer": "^6.0.3" | |
| } | |
| } |