React.Children.only 预计会收到单个 React 元素子错误
Posted
技术标签:
【中文标题】React.Children.only 预计会收到单个 React 元素子错误【英文标题】:React.Children.only expected to receive a single React element child error 【发布时间】:2017-12-09 19:07:18 【问题描述】:我收到“React.Children.only 预计会收到一个 React 元素子项。”从下面的代码。
我使用 create-react-app 创建了一个新的 react 应用,并安装了 redux 和 react-redux,并创建了一个简单的 reducer 并用它创建了 store。
import React from "react";
import ReactDOM from "react-dom";
import createStore, combineReducers from "redux";
import Provider from "react-redux";
import logo from './logo.svg';
import './App.css';
class App extends React.Component
render()
return (
<div className="App">
<div className="App-header">
<img src=logo className="App-logo" />
<h2>Welcome to React</h2>
</div>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
function productReducer(state = [], action)
return state;
const store = createStore(
productReducer
);
ReactDOM.render((<Provider store=store><App /> </Provider>), document.getElementById('root'));
【问题讨论】:
参考这个链接-***.com/questions/39862145/… provider 需要一个 store 和单个根元素。 【参考方案1】:你这里有一个空间:
↓
<Provider store=store><App /> </Provider>
JSX 对单行间距有点挑剔。以上基本上被解释为:
<Provider store=store><App />' '</Provider>
(其实Prettier会产生pretty much this exact output)
您可以删除空格:
<Provider store=store><App /></Provider>
或者把它分成多行:
<Provider store=store>
<App />
</Provider>
【讨论】:
谢谢,它成功了,但是如何解决这类问题? 谢谢,对我来说,这有助于删除一个额外的逗号 (,)。【参考方案2】:我遇到了类似的问题,结果证明我已经将我的 App 根从一个函数转换为一个类,这意味着我必须从这里更改语法:
ReactDOM.render(
<Provider store=store>
App
</Provider>,
document.getElementById('root')
);
到这里:
ReactDOM.render(
<Provider store=store>
<App />
</Provider>,
document.getElementById('root')
);
【讨论】:
以上是关于React.Children.only 预计会收到单个 React 元素子错误的主要内容,如果未能解决你的问题,请参考以下文章
React.Children.only 预计在使用 Ref 时会收到单个 React 元素子错误
React.Children.only 期望接收单个 React 元素子元素。?
错误 React.Children.only 期望接收单个 React 元素子元素
Next.js:错误:React.Children.only 预期接收单个 React 元素子项