React+Redux 创建出来的Store无法读取Reducer的初始State

#1

在尝试用React + Redux来写项目.
框架流程都已经搭好, 在最后组件里面取属性的时候, 发现取到的是’undefined’.
然后去一步一步的找, 最后发现是在creatStore的时候, 创建出来的Store压根就没有拿到Reducer给他的State.
很头疼, 不知道是哪里出了问题, 请大神指教.

#####再划下重点, 创建的store没有拿到作为参数传递进来的Reducer所持有的初始状态!
上代码
####configureStore.js

import { AsyncStorage } from 'react-native';
import { applyMiddleware, createStore, compose } from 'redux';
import thunk from 'redux-thunk';
import createLogger from 'redux-logger';
import {persistStore, autoRehydrate} from 'redux-persist';
import reducers from '../reducers';

var isDebuggingInChrome = __DEV__ && !!window.navigator.userAgent;
var logger = createLogger({
    predicate: (getState, action) => isDebuggingInChrome,
    collapsed: true,
    duration: true,
});

var middlewares = compose(applyMiddleware(thunk, logger), autoRehydrate());

export default function configureStore() {
    console.log('Reducer'+reducers)

    const store = createStore(reducers, undefined, middlewares);

    persistStore(store, {storage: AsyncStorage});
    if (isDebuggingInChrome) {
        window.store = store;
    }
    return store;
}

####reducer/prepareConnect

import * as types from '../constants/ActionTypes';

const initialState = {
    readyButtonState:false, 
    appearImage:'./img/bpm1_setwifi_unready@2x.png'
}

export default function prepareConnect(state = initialState,action) {
    switch (action.type){
        case types.CONNECT_CLICK_READY: {
            return Object.assign({},state,{
                readyButtonState:action.currentState,
                appearImage:action.currentImage,
            })
        }
            break;
        default:
            return state;
            break;
    }
}

####reducer/index.js

import { combineReducers } from 'redux';
import prepareConnect from './prepareConnect';

const rootReducer = combineReducers({
    prepareConnect
});

export default rootReducer;
#2

你可以看看react-redux中的store是如何传递的。
https://segmentfault.com/a/1190000010158572

#3

谢谢, 我知道是如何传递的.
就像我上面说的, 重点是
###为什么Store没有拿到Reducer传递给他的状态

#4

reducer有注册吗?

#5

注册?
我在index里面将reducer进行了combine, 然后在creatStore的时候将conbine之后的对象传递进去.
不是Store就应该有Reducer的状态了么.

#6

如果你安装了redux谷歌调试工具,可以追踪一下store的传递

#7

你怎么拿state数据的?这样试试能拿到不

store.subscribe(() => {
    console.log(store.getState());
});
#8

我之前不知道这个, 我去查一下.
在我用的中间件 那个log的看不出来么…

#9

我是直接store.getState();来查看状态的
我试一下你的代码, 谢谢.

#10

已经解决了.
挺蠢的, 问题是出在我对Redux的数据结构不了解, 致使没有去到Store里面的状态.
谢谢大家

#11

你好,大佬,怎么解决的啊,我也遇到了和你一样的困惑,始终找不到问题出在哪里啊