反应错误' Failed propType:提供给`Provider`的无效prop`child`,期望一个ReactElement'

时间:2016-04-20 06:22:47

标签: javascript reactjs redux react-redux

我对React.js有些问题。 这是我的代码:

%lf

并运行该页面,它说:

  

propType失败:提供给import React from 'react'; import { createStore } from 'redux'; import { Provider } from 'react-redux'; import App from './containers/App'; import todoApp from './reducers'; let store = createStore(todoApp); let rootElement = document.getElementById('root'); React.render( <Provider store={store}> {() => <App />} </Provider>, rootElement ); 的无效道具children,预计会有一个ReactElement

这是我相关的已安装节点模块的列表:

  • 反应15.0.1
  • react-redux 4.4.5
  • redux 3.4.0

实际上,我目前正在学习与Redux的React,所以我很难怎么做。我只是按照网站上的教程(我可以提供一个链接,但它不是英文)但它只是没有使用该错误消息。 当我搜索时,有人说反应和react-redux的升级版本,但我安装了最新版本。 任何建议都会非常感激。

3 个答案:

答案 0 :(得分:18)

根据the doc,您可以使用普通的React元素而不是<Provider />内的函数。

因此,只需将代码更改为

即可
<Provider store={store}>
    <App />
</Provider>

我认为自react@0.14以来这已经发生了变化。

答案 1 :(得分:7)

最初的问题有一个错字。您的响应在正确的语法中是正确的。

然而,直接原因是<App />需要在一个单独的行上。

如果你把它放在与<Provider store={store}>相同的行上,React / Redux会尝试用它做更多的事情。

ReactDOM.render(
<Provider store={store}>
  <App />
</Provider>,
  document.getElementById('root')
);

答案 2 :(得分:0)

我被带到这个地方,我只是忘了提供一个道具。我想说的是,请确保您提供的是组件使用的道具,并应对其进行修复。