Je cherche à modifier et à tableau dans réagir et insérer des éléments sur un index spécifique. Voici à quoi ressemble mon état:
this.state = {arr: ['', '', '', '' ]}
Ce que je veux faire, c'est compiler ce arr[index] = 'random element'
pour réagir à la syntaxe js setState. Ce que j'ai essayé de faire, c'est:
this.setState({ arr[index]: 'random element' })
mais a échoué, ty!
Clonez l'état actuel à l'aide de slice()
. Ce faisant, l'état d'origine reste inchangé jusqu'à setState()
. Après le clonage, effectuez vos opérations sur la baie clonée et définissez-la dans l'état. La réponse précédente va muter l'état. Lisez à ce sujet ici
let a = this.state.arr.slice(); //creates the clone of the state
a[index] = "random element";
this.setState({arr: a});
[~ # ~] mise à jour [~ # ~]
Utilisez simplement Object.assign () comme suggéré ici pour faire une copie de votre état.
Ainsi, vous pouvez le faire comme suit:
let new_state = Object.assign({}, this.state);
let a = new_state.arr;
a[index] = "random element";
this.setState({arr: a});
J'espère que ça aide.
utiliser l'opérateur d'étalement https://codeburst.io/javascript-es6-the-spread-syntax-f5c35525f754
let newChild = "newChild"
this.setState({
children: [
...this.state.children,
newChild
]
})
Deux façons de faire:
REMARQUE: Il n'est pas autorisé d'utiliser la méthode array Push, car elle mute le tableau. Il ne laisse pas le tableau intact mais le modifie. Au lieu de cela, il devrait y avoir un nouveau tableau créé qui est utilisé pour mettre à jour l'état.
Array concat method crée un nouveau tableau, en laissant l'ancien tableau intact, mais aussi en renvoyant un nouveau tableau.
this.state = {
value: '',
list: ['a', 'b', 'c'],
};
this.setState(state => {
const list = state.list.concat(state.value);
return {
list,
value: '',
};
});
this.state = {
value: '',
list: ['a', 'b', 'c'],
};
this.setState(state => {
const list = [...state.list, state.value]; <--insert in end -->``
const list = [state.value, ...state.list]; <--Or insert in start -->
return {
list,
value: '',
};
});
Référence: https://www.robinwieruch.de/react-state-array-add -update-remove /