我的编程空间,编程开发者的网络收藏夹
学习永远不晚

React报错Type'()=>JSX.Element[]'isnotassignabletotypeFunctionComponent

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

React报错Type'()=>JSX.Element[]'isnotassignabletotypeFunctionComponent

总览

当我们尝试从函数组件中返回元素组成的数组时,会产生"Type '() => JSX.Element[]' is not assignable to type FunctionComponent"错误。为了解决该错误,可以将元素数组包裹在React片段中。

这里有个示例用来展示错误是如何发生的。

// App.tsx
import React from 'react';
// ⛔️ Type '() => JSX.Element[]' is not assignable to type 'FunctionComponent<{}>'.
// Type 'Element[]' is missing the following properties
// from type 'ReactElement<any, any>': type, props, key ts(2322)
const App: React.FunctionComponent = () => {
  return ['Alice', 'Bob'].map(element => <div key={element}>{element}</div>);
};
export default App;

这是完全有效的React.js代码,因为我们能够从React的函数组件中返回一个数组。然而,FunctionComponent接口的返回类型是ReactElementnull

这也就意味着,我们可以只返回一个React元素或者null值。

React片段

为了解决该类型错误,我们必须将数组包裹在React片段(React fragment)中。

// App.tsx
import React from 'react';
const App: React.FunctionComponent = () => {
  return (
    <>
      {['Alice', 'Bob'].map(element => (
        <div key={element}>{element}</div>
      ))}
    </>
  );
};
export default App;

当我们需要对一个元素列表进行分组而不向DOM添加额外的节点时,就会用到片段。

React.Fragment

你可能还会看到使用了更加详细的片段语法。

// App.tsx
import React from 'react';
const App: React.FunctionComponent = () => {
  return (
    <React.Fragment>
      {['Alice', 'Bob'].map(element => (
        <div key={element}>{element}</div>
      ))}
    </React.Fragment>
  );
};
export default App;

上面的两个例子达到了相同的结果--它们对元素列表的元素进行分组,而没有给DOM添加额外的节点。

div

另一个解决方案是将元素数组包裹在另一个DOM元素中,例如一个div。

// App.tsx
import React from 'react';
const App: React.FunctionComponent = () => {
  return (
    <div>
      {['Alice', 'Bob'].map(element => (
        <div key={element}>{element}</div>
      ))}
    </div>
  );
};
export default App;

这仍然符合FunctionComponent接口中指定的返回类型,因为我们的组件返回的是一个单一的React元素。

总结

为了解决"Type '() => JSX.Element[]' is not assignable to type FunctionComponent"错误,可以使用React片段或者div将元素数组进行包裹。

以上就是React报错Type '() =&gt; JSX.Element[]' is not assignable to type FunctionComponent的详细内容,更多关于React报错FunctionComponent的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

React报错Type'()=>JSX.Element[]'isnotassignabletotypeFunctionComponent

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

React报错Type'()=>JSX.Element[]'isnotassignabletotypeFunctionComponent

这篇文章主要为大家介绍了React报错Type'()=>JSX.Element[]'isnotassignabletotypeFunctionComponent解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-19

解决React报错Property'X'doesnotexistontype'HTMLElement'

这篇文章主要为大家介绍了解决React报错Property'X'doesnotexistontype'HTMLElement',有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-08

TS报错:Parameter 'xxx' implicitly has an 'any' type的解决方式

这篇文章主要给大家介绍了关于TS报错:Parameter 'xxx' implicitly has an 'any' type的解决方式,文中将产生错误的原因及解决方法都介绍的非常详细,需要的朋友可以参考下
2022-11-13

MyBatis测试报错:Cannot determine value type from string 'xxx'的解决办法

这篇文章主要给大家介绍了关于MyBatis测试报错:Cannot determine value type from string 'xxx'的解决办法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-02-17

Can't perform a React state update on an unmounted component报错解决

这篇文章主要为大家介绍了Can't perform a React state update on an unmounted component报错解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-08

编程热搜

目录