2016-05-26 3 views
0

есть вопрос, когда я Ues react,Действие не может обновить вид

1.

import {combineReducers} from 'redux'; 
    let change = (state, action) => { 
     switch(action.type) { 
      case 'change': 
       return { 
        value: action.value 
       } 
       break; 
      default: 
       return { 
        value: 'default' 
       }; 
     } 
    } 
    let combineReducer = combineReducers({ 
     change 

    }) 
    export default combineReducer; 

2.

export default (state, action)=>{ 
     switch (action.type) { 
     case 'change': 
      return { 
       value: action.value 
      } 
      break; 
     default: 
      return { 
       value: 'default' 
      }; 
    } 
} 

Что различия цы?

, когда i ues № 1, вид не может обновиться. но No.2 может это сделать, почему?

ответ

0

При использовании combineReducer, состояние дерева будет вложенная. Например, ваше дерево состояний { value: '' } в NO.2, но в NO.1 это { change: { value: '' } }.

Таким образом, вы должны изменить свой mapStateToProps от state => ({ value: state.value }) до state => ({ value: state.change.value }).

Это легко понять: при объединении многих редукторов необходимо указать ключ для каждого редуктора.

http://7xinjg.com1.z0.glb.clouddn.com/combined-redux.png

+0

Хорошо, спасибо – Haley

Смежные вопросы