插件窝 干货文章 幕后反应:到底发生了什么?

幕后反应:到底发生了什么?

react javascript createelement 调用 309    来源:    2024-10-20

react 长期以来一直是首选的 javascript 库,并且很容易成为世界上最受欢迎的库之一。此外,随着 next.js 和 remix 等流行框架构建在 react 之上,并且能够使用 react-native 进行移动开发,该库不会很快消失。然而,这样做的问题是,大多数初学者都涌向 react,并在没有真正理解它是如何工作的情况下开始学习它。那么让我们开始吧。

jsx 的工作原理

在 react 中,jsx (javascript xml) 是一种看起来与 html 类似但在 javascript 中工作的语法。它本身不是有效的 javascript,因此 react 使用转译器(通常是 babel)将 jsx 转换为标准 javascript。该 javascript 代码是浏览器最终解释的内容。

当您编写 jsx 时,它会转换为 react.createelement() 函数调用。这些函数调用产生 react 元素,它们是 react 应用程序的构建块。每个元素代表 ui 的一部分。

这是一个示例:

react 组件中的 jsx

const element = (
  <div>
    <h1>hello, react!</h1>
    <p>this is a paragraph.</p>
  </div>
);

jsx 转换为 javascript:

const element = React.createElement(
  'div',
  null,
  React.createElement('h1', null, 'Hello, React!'),
  React.createElement('p', null, 'This is a paragraph.')
);

react 接受这些嵌套的 react.createelement() 调用,并将它们转换为浏览器 dom 中相应的 html 元素。

结论

jsx 允许您编写类似于 html 的语法,从而使编写 react 组件变得更加容易,但它只是使用 javascript 创建应用程序结构的 react.createelement() 调用的语法糖。这就是 react 通过 virtual dom 机制有效管理 ui 的原因。

如果您喜欢这篇文章,您可能还会喜欢我每周向像您一样的开发人员发送的免费时事通讯。您可以在这里注册。