2016-02-13 2 views
1

Я интегрирую Redux в свое приложение React Native.My Redux store - это массив

У меня возникли проблемы с передачей состояния в мои компоненты и реализовано, потому что начальное состояние начинается с ключа «0», например.

{ 
    '0': { 
    key: 'value' 
    } 
} 

I.e. это массив.

Так что, если у меня есть в моем connect экспорта:

export default connect(state => ({ 
    key: state.key, 
    reduxState: state 
    }), 
    (dispatch) => ({ 
    actions: bindActionCreators(MyActions, dispatch) 
    }) 
)(MyReduxApp); 

key всегда не определено, однако, reduxState получает передается успешно. (Конечно, это не рекомендуется, чтобы отправить весь состояние вниз)

Корневой компонент:

import React, { Component } from 'react-native'; 
import { createStore, applyMiddleware, combineReducers } from 'redux'; 
import { Provider } from 'react-redux'; 

import DataReducer from '../Reducers/Data'; 
import MyRedApp from './JustTunerApp'; 

const createStoreWithMiddleware = applyMiddleware(thunk)(createStore); 
const reducer = combineReducers([DataReducer]); // ready for more reducers.. 
// const store = createStoreWithMiddleware(reducer); 
const store = createStore(reducer); 

export default class App extends Component { 
    render() { 
    console.log ("store.getState:") 
    console.log (store.getState()) 
    return (
     <Provider store={store}> 
     <MyReduxApp /> 
     </Provider> 
    ); 
    } 
} 

Мой редуктор выглядит следующим образом:

const initialState = { 
    key : "value" 
}; 

export default function key(state = initialState, action = {}) { 
    switch (action.type) { 
    // ... 
    default: 
     return state; 
    } 
} 

ли магазин возвращается как массив? Как передать его методу connect?

Если я передать его в качестве key: state[0].key то это работает, но это не кажется правильным в соответствии со всеми примерами, которые я видел ..

+0

Как я вижу в вашем редукторе, вы не возвращаете 'state'; –

+1

Что бы ни было возвращено из корневого редуктора, это именно то, что передается 'connect'. Если вы используете средства промежуточного уровня/хранилища, это может повлиять на значение. –

+0

@ MichelleTilley спасибо, однако я удалил промежуточное ПО ('redux-thunk'), но все равно получаю то же самое. Но ваш комментарий дает мне ключ к дальнейшему расследованию. – Adamski

ответ

1

я отправил корневой компонент раньше ... что провел ключ.

const reducer = combineReducers([DataReducer])

должен был

const reducer = combineReducers({DataReducer})

урок здесь не торопитесь и посмотрите на документы более близко!

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