React#31 error,让我变成光头

简单描述下#31号错误信息描述的内容:

React的render函数可接受的返回值类型包括:

  • string,比如return 'I am kasong';
  • number,比如return 123;
  • array,比如return  [<p>ka</p>, <p>song</p>];。

其中[]会被处理为React.Fragment

  • object,比如return  <p>ka song</p>;。

因为该返回值会被编译为React.createElement(或jsx.createElement,视React版本不同而不同)。

而React.createElement的返回值是一个对象(即object类型)。

这里的报错信息是说:你某个组件返回了一个非法值。因为这个值是object类型,但是他不是一个JSX对象。

想要复现这个问题也很简单,比如如下代码:


  1. function App() { 
  2.   reutrn {}; 

返回值是个object,但非JSX对象。

作为React老司机,是绝对不可能写错返回值类型的。况且,写错的话,本地开发就会报错了。

而且很奇怪,这个问题,为什么只在这款机型复现呢?

初见端倪

现在我们掌握的线索是:

  • 这是个个别机型复现的报错
  • 报错原因是因为render函数返回了错误的类型

我们需要更多线索!!

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章