Comment puis-je ajouter un élément à un tableau dans réducteur de Réagir natif redux?
Comment puis-je ajouter des éléments dans mon tableau arr[]
de redux de l'état dans le réducteur?
Je suis en train de faire ce-
import {ADD_ITEM} from '../Actions/UserActions'
const initialUserState = {
arr:[]
}
export default function userState(state = initialUserState, action)
{
console.log(arr);
switch (action.type)
{
case ADD_ITEM:
return {
...state,
arr: state.arr.push([action.newItem])
}
default:
return state
}
}
Vous devez vous connecter pour publier un commentaire.
Deux options différentes pour ajouter un élément à un tableau sans mutation
OU
push
ne pas retourner un tableau, mais la longueur de celui-ci (docs), de sorte que vous êtes en train de faire est de remplacer le tableau avec sa longueur, de perdre la seule référence à ce que vous avez eu. Essayez ceci:Object.assign
pour que les modifications de la matrice à l'intérieur de l'état s'il vous plaît?Object.assign
? Il est utilisé pour les objets, et c'est essentiellement la même chose. Lorsque vous avezarr:[...state.arr, action.newItem]
vous pouvez utiliserobj: Object.assign({}, state.obj, action.newItem
, à condition queobj
etnewItem
sont des objets. Si vous voulez le faire pour l'ensemble de l'etat, il vous suffit de faireObject.assign({}, state, {arr: [..state.arr, action.newItem]})
var obj = { isLoading: true, data: ['a', 'b', 'c', 'd'] } var newObj = Object.assign({}, obj, { data: [...obj.data, 'e'] });
et il me donne ceci:{ isLoading: true, data: [ 'a', 'b', 'c', 'd', 'e' ] }
pour newObj qui est assez bon pour ce que j'en ai besoin. Mais je voulais utiliser l'Objet.attribuer sans la propagation de l'opérateur pour produire le même résultat. Est-ce possible?[].concat(obj.data, ['e'])
, si vous ne voulez pas utiliser l'ES6 fonctionnalités. Objet.attribuer est destiné pour les objets, et même si elle ne vous donnera pas toutes les erreurs de l'utiliser sur un tableau, le résultat n'est pas une concaténation de tableaux. Si vous essayezObject.assign({}, [1, 2, 3], [4])
, vous obtenez[4, 2, 3]
comme un résultat.Si vous avez besoin d'insérer dans une position spécifique dans le tableau, vous pouvez le faire:
J'ai un échantillon