2017-12-24 6 views
-1

wer kann erklären, warum in redux speichern artikel (array) zustand verwüstet, wenn ich einen anderen zustand (zb sprache) hier sind 2 screenshots darüber. first screenshotWarum Redux-Zustand einen anderen Zustand ändern?

second screenshot

Aktionen/Sprache

import { SWITCH_LANG } from '../types'; 

// switch Language 
export const setlocale = (lang) => (dispatch) => { 
    localStorage.devsLang = lang; 
    dispatch(setLocaleDispatch(lang)) 
} 

export const setLocaleDispatch = (lang) => ({ 
    type: SWITCH_LANG, 
    lang 
}) 

Minderer/Sprache

import { SWITCH_LANG } from '../types'; 

export default function locale(state = { lang: "en" }, action = {}) { 
    switch(action.type) { 
     case SWITCH_LANG: 
      return { lang: action.lang } 
     default: 
      return state; 
    } 
} 

one more screenshot from redux-logger

+0

Pleae fügen minimalen Code hinzu. Dies wird Ihnen keine Antworten – stack26

Antwort

0

Sie Ihren Zustand zu überschreiben. Sie müssen Ihren vorhandenen Status kopieren und Ihre neuen Werte hinzufügen. Verwenden Sie Object.assign oder die spread operator wie folgt:

Object.assign({}, state, { lang: action.lang }) 

Mehr Infos here

+0

nicht helfen, ich versuchte dies –

+0

bitte Artikel-Code zur Verfügung stellen. –

+0

welche? Artikelreduzierer? –

0

Minderer/article

import { createSelector } from 'reselect'; 
import { ADD_NEW_ARTICLE, GET_ALL_ARTICLES, GET_ONE_ARTICLE } from '../types'; 

export default function article(state = {}, action = {}) { 
    switch(action.type) { 
     case ADD_NEW_ARTICLE: 
      return action.article 
     case GET_ALL_ARTICLES: 
      return action.articles 
     case GET_ONE_ARTICLE: 
      return action.oneArticle 
     default: 
      return {}; 
    } 
} 

export const articlesHashSelector = state => state.article; 

export const articlesSelector = createSelector(
    articlesHashSelector, 
    hash => Object.values(hash) 
); 
0

Vom redux-Logger Screenshot

ich sagen kann, dass Sie zurückkehren ein Array von Artikeln, überprüfen th e Nutzlast von GET_ALL_ARTICLES Aktion

case GET_ALL_ARTICLES: 
    return action.articles 

Also im Grunde Ihr den Artikel Zustand mutieren. von Objekt zu Array

Verwandte Themen