简单描述下#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对象。
想要复现这个问题也很简单,比如如下代码:
- function App() {
- reutrn {};
- }
返回值是个object,但非JSX对象。
作为React老司机,是绝对不可能写错返回值类型的。况且,写错的话,本地开发就会报错了。
而且很奇怪,这个问题,为什么只在这款机型复现呢?
初见端倪
现在我们掌握的线索是:
- 这是个个别机型复现的报错
- 报错原因是因为render函数返回了错误的类型
我们需要更多线索!!