2016-02-15 6 views
10

यह धागा मैं herecombineReducers कोड को तोड़ने के लिए

तैनात समस्या निवारण की बहुत बाद मैंने पाया कि इस कोड को किसी भी समस्याओं

import React from 'react'; 
import { createStore, combineReducers, applyMiddleware } from 'redux'; 
import createLogger from 'redux-logger'; 
import thunkMiddleware from 'redux-thunk'; 
import { Provider } from 'react-redux'; 
import DataTableReducer from './reducers/DataTableReducer'; 
import DimensionPickerReducer from './reducers/DimensionPickerReducer'; 

const loggerMiddleware = createLogger(); 
const store = createStore(
    DimensionPickerReducer, 
    applyMiddleware(
     thunkMiddleware, 
     loggerMiddleware 
    ) 
); 

export default store; 

बिना काम करता है के लिए बाद में है लेकिन अगर मैं एक के साथ अपने एकल कम करने की जगह का कारण बनता है कम करने कॉल

import React from 'react'; 
import { createStore, combineReducers, applyMiddleware } from 'redux'; 
import createLogger from 'redux-logger'; 
import thunkMiddleware from 'redux-thunk'; 
import { Provider } from 'react-redux'; 
import DataTableReducer from './reducers/DataTableReducer'; 
import DimensionPickerReducer from './reducers/DimensionPickerReducer'; 

const loggerMiddleware = createLogger(); 
const store = createStore(
    combineReducers({ 
     DataTableReducer, 
     DimensionPickerReducer 
    }), 
    applyMiddleware(
     thunkMiddleware, 
     loggerMiddleware 
    ) 
); 

export default store; 

की तरह मैं तुरंत DimensionPicker नियंत्रण है कि अनिवार्य रंगमंच की सामग्री निर्दिष्ट नहीं किया गया था द्वारा हो रही त्रुटियों शुरू गठबंधन।

तो combineReducer विधि मेरे लिए काम नहीं कर रही है।

मुझे यहां एक नमूना प्रोजेक्ट अपलोड किया गया है जो समस्या दिखाता है।

{ 
    DimensionPickerReducer: { 
     dimenisionName: '', 
     pickerIsLoading: false, 
     pickerError: '', 
     currentAttribute: '', 
     attributeList: [] 
    }, 
    DataTableReducer: { 
     tableData: [], 
     tableIsLoading:false, 
     tableError: '' 
    } 
} 

तो तुम करने के लिए अपने कंटेनर का समायोजन करना चाहिए:

https://github.com/abhitechdojo/MovieLensReact

आप संयुक्त reducers के साथ अपनी दुकान एक Git क्लोन

उत्तर

20

कर उस तरह डेटा संरचना होगा के बाद npm install चलाने के लिए होगा संयुक्त दुकान के साथ काम करते हैं। DimensionPickerContainer.js में उदाहरण के लिए आप mapStateToProps समारोह बदलना चाहिए:

const mapStateToProps = (state) => { 
    return { 
     attributeList : state.DimensionPickerReducer.attributeList, 
     currentAttribute : state.DimensionPickerReducer.currentAttribute 
    } 
} 

तुम भी नाम दे सकते हैं अपने स्टोर में कम कर देता है, तो वे डेटा संरचना में बदसूरत नहीं लग रही होगी। जैसे combineReducers({ dimensionPicker: DimensionPickerReducer, dataTable: DataTableReducer})

+0

और आरंभिक संयुक्त डेटा संरचना कहां घोषित की जाएगी? इससे पहले मैं संबंधित reducers में प्रारंभिक राज्य के लिए व्यक्तिगत डेटा संरचनाओं की घोषणा कर रहा था। अब अगर मुझे सभी शुरुआती राज्यों के लिए एक डेटा संरचना होनी है। इसे घोषित करने के लिए एक अच्छी जगह क्या होगी? –

+2

डेटा संरचना अभी भी संबंधित reducers में घोषित किया जाना चाहिए। और यदि आप अपने स्टोर में प्रारंभिक डेटा लोड करना चाहते हैं, तो सबसे अच्छी जगह है जहां आप 'createStore() 'घोषित करते हैं, बस इसे दूसरे तर्क के रूप में पास करें। इस पर और अधिक: https://github.com/reactjs/redux/blob/master/docs/api/createStore.md – xCrZx

संबंधित मुद्दे