警告:上下文类型失败:在“路由”中将上下文“ store.isRequired”标记为必需,但其值是“ undefined”

Pau*_*ocq 5 javascript reactjs redux react-redux

我在react-redux Provider上遇到问题:我将路由器从index.js中移到了routing.js文件中。我使用了提供程序来向我的路由组件提供有关商店的知识,但是在执行到达render方法之前,我得到了一个奇怪的警告:

Warning: Failed context type: The context `store.isRequired` is marked as required in `Routing`, but its value is `undefined`.

即使我摆脱.isRequiredin 也会发生这种情况Routing.contextTypes。而且,如果我在render函数的开头放置了一条调试器语句,那么它似乎this.context并不是未定义的,并且我的应用程序运行得很吸引人。我想知道我是否做错了什么,或者它可能是react-redux Provider的错误或什么。

这是我的代码:

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { setLanguage } from 'redux-i18n';
import I18n from 'redux-i18n/immutable';

import configureStore from './store/configure_store';
import { Routing } from './routing';
import translations from './translations';

import '../scss/index.scss';

const store = configureStore();

store.dispatch(setLanguage(navigator.language));

ReactDOM.render(
    <Provider store={ store }>
        <I18n translations={ translations }>
            <Routing />
        </I18n>
    </Provider>,
    document.getElementById("root")
);
Run Code Online (Sandbox Code Playgroud)

routing.js(为阅读目的而简化)

import React from 'react';
import { Route, IndexRedirect, IndexRoute, Router, browserHistory } from 'react-router';
import AppContainer from './components/App/App';
import Base from './components/Root/Base';
import BaseInProject from './components/App/BaseInProject';
import { ProjectListContainer } from './components/App/Projects/ProjectsList';

export class Routing extends React.Component {
    render() {
        const { store } = this.context;

        const beforeAppRouteEnter = (nextState, replace, callback) => {
            // This function needs to store.dispatch some stuff
        };

        // Some other router functions

        const routes = (
            <Route path='/' component={ Base }>

                <Route component={ AppContainer } onEnter={ beforeAppRouteEnter }>
                    <IndexRoute component={ ProjectListContainer } />

                         // Some other routes

                        <IndexRedirect to='media' />
                    </Route>
                </Route>
            </Route>
        );

        return (
            <Router history={ browserHistory }>{ routes }</Router>
        );
    }
}
Routing.contextTypes = {
    store: React.PropTypes.shape(React.PropTypes.any)
};
Run Code Online (Sandbox Code Playgroud)

谢谢!