2016-04-06 6 views
4

Я пытаюсь обновить корзину кнопку в проекте, когда пользователь добавляет элемент в корзину.Обновление Реакция компонента путем отправки от неактивного компонента

У меня есть построить части сайта в React.js - как телега, кнопка корзины и т.д.

configureStore.js:

export default function configureStore(initialState) { 
     const store = createStore(
     reducers, 
     initialState 
     return store 
    } 

Действие:

export function updateCart(payload) { 
    return { 
     type: CART_UPDATE, 
     payload: payload 
    } 
} 

Редуктор:

export default function cart(state = {}, action) { 

    switch (action.type) { 

      case CART_UPDATE: 

      const cart = { 
         data: action.payload.cart, 
         errors: action.payload.errors, 
         isFetching: false 
        }; 

      return { 
       ...state, 
       ...cart 
      }; 

    return state; 
} 

CartButton.js

... componnent etc. 

function mapStateToProps(state) { 
    return { 
     cart: state.cart.data 
    }; 
} 

export default connect(mapStateToProps)(CartButton); 

Provider

import configureStore from './store/configureStore' 
var store = configureStore(); 

ReactDOM.render((<Provider store={store}><Cart showControls={true} /></Provider>), document.getElementById('react-cart')); 

Я диспетчерская действие, которое, как предполагается обновить количество корзины из не реагируют компонент, как это:

// imports 
import { dispatch } from 'redux'; 
import { updateCart } from '../../actions/cart_actions'; 
import configureStore from '../../store/configureStore' 
var store = configureStore(); 

, а затем ..

store.dispatch(updateCart(response)); 

действие отправляется и состояние обновляется. Компонент корзины подключается через. реакция-редукция connect(). Но почему-то это не обновление компонента с новым количеством.

Когда я отправляю действие из моей корзины, он работает нормально.

Возможно, мне не хватает чего-то очевидного. Какие-либо предложения?

+0

Вы абсолютно _sure_, что вы вызываете отправку в _same_ 'store', который передается вашему' '? – rossipedia

+0

Как рассказывал россипедия, вы создавали экземпляр только одного магазина или несколько раз называли 'createStore'? – VonD

+0

Я уверен, что я использую тот же магазин. Я обновил более подробные фрагменты кода. Я не понимаю, почему он не обновляется. Как я упоминаю в сообщении; количество в CartButton.js обновляется, когда я обновляюсь из компонента Cart.js. –

ответ

9

Так что я выяснил, что вы не должны определять свой магазин в нескольких местах.

Я просто импортировал магазин постоянная из моего корневого app.js-файлы, как это:

импорта {магазин} от «./app»;

+0

Благодаря @Sacho для уточнения –

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