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 元素子项

如何修复 React.Children.only 期望在 react.js 中接收单个 React 元素子项?

React.children.only 期望接收单个反应元素子导航器