Muchas personas promueven la inmutabilidad porque usan redux junto con react, pero todavía veo personas que usan push en lugar de concat.
Tome este código por ejemplo:
submitComment() { console.log('submitComment: '+JSON.stringify(this.state.comment)) APIManager.post('/api/comment', this.state.comment, (err, response) => { if (err){ alert(err) return } console.log(JSON.stringify(response)) let updateList = Object.assign([], this.state.list) updatedList.push(response.result) this.setState({ list: updatedList }) }) }en este caso importa en absoluto? ¿Cuál es el problema con empujar arriba?
La inmutabilidad se usa en reaccionar y no solo por redux. El estado del componente React no debe mutarse directamente. Según los documentos :
Nunca modifique this.state directamente, ya que llamar a setState() después puede reemplazar la mutación que realizó. Trate este estado como si fuera inmutable.
Además, la inmutabilidad también ayuda en la reconciliación. Si los accesorios son inmutables, puede realizar una verificación de igualdad superficial para ver si ha cambiado o no, y renderizar en consecuencia.
En su código, updatedList se clona en una nueva matriz usando Object#assign . Ahora puede Array#push a la matriz, sin cambiar la original. Usar Array#concat es un poco más corto y más legible:
const updatedList = this.state.list.concat(response.result);