You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否不使用JSX开发React?能否在React中使用Preact/Inferno等库?

关于React相关疑问的解答

1. 能不能不用JSX写React?

完全可以。JSX本质只是React官方提供的语法糖,最终会被Babel这类工具编译成React.createElement()(React 17+则是jsx()函数)的调用。

比如你写的JSX代码:

<div className="greeting">Hello React</div>

编译后会变成:

React.createElement('div', { className: 'greeting' }, 'Hello React');

你完全可以直接写原生JavaScript代码,用React.createElement构建组件树,甚至用函数式组件返回这类调用结果,完全不依赖JSX。不过JSX的优势是结构直观、和HTML接近,维护起来更方便,所以大部分项目会选择使用,但不用也完全没问题。

2. 能不能用简单函数替代,或者在React项目里用Preact/Inferno?

简单函数的方式

当然可以,而且这是现在React的推荐写法。函数式组件本身就是普通的JavaScript函数,只要返回React元素(不管是JSX编译后的结果,还是直接用createElement生成的)就行,配合Hooks可以实现所有类组件能做的逻辑。比如一个最简单的函数式组件:

function Greeting() {
  return React.createElement('div', null, 'Hello from function component');
}

关于Preact/Inferno的使用

首先要明确:Preact和Inferno是独立的React替代库,它们不是React的“插件”或“子库”,不能直接在React项目里混用这两个库的核心代码。不过:

  • Preact提供了preact/compat包,这个包实现了和React几乎一致的API(包括ReactDOM、Hooks等),可以让原本用React写的代码直接在Preact项目中运行,甚至你可以把项目的依赖从React换成Preact+compat,代码几乎不用改。
  • Inferno也有类似的兼容层(inferno-compat),同样可以兼容React的API,让React代码在Inferno环境运行。

但反过来,React本身并没有提供对Preact/Inferno组件的兼容支持,你不能直接在React项目里导入Preact的组件来使用。

关于“React库可兼容Preact、Inferno”的结论

这个结论不准确。正确的逻辑是:Preact和Inferno为了降低迁移成本,提供了兼容React API的适配层,让它们可以运行React编写的代码;而React本身并没有内置对这两个库的兼容能力,无法直接使用Preact/Inferno的组件或核心功能。

内容的提问来源于stack exchange,提问作者Amir Asgari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:10:16