2017-12-24 14 views
-1

다른 주 (예 : 언어)를 바꿀 때 상품 저장 (배열) 상태가 황폐 해지는 이유를 설명 할 수있는 사람 여기에 2 스크린 샷이 있습니다. first screenshot왜 redux 상태가 다른 상태를 변경합니까?

second screenshot

활동/언어

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 
}) 

감속기/당신은 당신의 상태를 덮어

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

최소한의 코드를 추가하십시오. 이것은 당신에게 대답을 얻지 못할 것입니다 – stack26

답변

0

언어. 기존 상태를 복사하고 새 값을 추가해야합니다. 사용 Object.assign 또는 아래 spread operator :

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

더 많은 정보 here

+0

나 도움이,이 시도 –

+0

기사 코드를 제공하십시오. –

+0

어느 쪽? 기사 감속기? –

0

감속기/기사

REDUX 로거 스크린 샷에서
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

난 당신이 돌아 것을 알 수 있습니다 배열의 배열, 확인 GET_ALL_ARTICLES의 전자 페이로드

case GET_ALL_ARTICLES: 
    return action.articles 

그래서 기본적 기사 상태를 돌연변이 있습니다 작업입니다. 객체에서 배열