我正在尝试升级到Redux V6,但对于如何使用createContext函数及其必要性感到困惑。我知道我的商店创建成功,但是当我尝试运行我的应用程序时,我得到了
在“ Connect(ConfiguredApp)”的上下文中找不到“存储”。 将根组件包装在中,或传递自定义React 上下文提供者和相应的React上下文 使用者在连接选项中连接到Connect(ConfiguredApp)。
哪个告诉我,我的提供者没有正确地将商店传给connect
来抢。我究竟做错了什么?谢谢!
import 'babel-polyfill';
import React from 'react';
import {render} from 'react-dom';
import {Provider} from 'react-redux';
import {ConnectedRouter} from 'connected-react-router';
import {history, store} from './store/store';
import Routes from './routes';
const customContext = React.createContext(null);
render(
<Provider store={store} context={customContext}>
<ConnectedRouter history={history} context={customContext}>
<Routes />
</ConnectedRouter>
</Provider>, document.getElementById('app'),
);
答案 0 :(得分:3)
几乎绝对不应创建和传递自定义上下文实例。如果出于某些特定原因,您想使用的上下文实例不是React-Redux已经在内部使用的默认实例,那么这只是 。 (这样做的一种假设原因是,如果您将一个商店用于整个应用程序组件树,但是有一个特定的子树需要从另一个商店接收数据。)
如果您确实想使用自己的自定义上下文实例,则需要将 same 上下文实例传递给 both {{ 1}}和应用中需要从该<Provider>
接收数据的每个连接的组件。
通过查看<Provider>
文档,他们确实声称在CRR版本6中,您可以将上下文实例传递给connected-react-router
,但这在这里不必要。
更具体地说,如果查看错误消息,则表明问题出在<ConnectedRouter>
中。因此,这是您自己连接的组件在说上下文不匹配。
最终,这里的答案是从Connect(ConfiguredApp)
和context
删除<Provider>
参数。您不需要它们。