我非常好奇事情是如何运作的.我最近提出的问题之一是React如何允许没有`符号的多行返回?

这是我的JS:

function func(){
   return `
      <elm>something</elm>
   `
}

这是React的脚本版本:

function func(){
   return <>
      <elm>something</elm>
   </>
}

我知道他们使用"/",但仅仅是它工作原理的总体 idea 就让我感到好奇.

推荐答案

React Components的返回不是需要引号或回勾(')的字符串.这是一种名为JSX的特殊格式.

JSX是JavaScript的语法扩展,允许您在JavaScript文件内编写类似HTML(ML)的标记.

从历史上看,React Elements曾经是由React.createElement函数编写的.问题中的组件:

function Func(){
   return <>
      <elm>something</elm>
   </>
}

写成

import React from "react";

function Func(){
   return React.createElement(
     /* Element or component name */
     React.Fragment, 
     /* props */
     null, 
     /* ...children */
     React.createElement(
       "div", null, "something"
     )
  )
}

为了让编写组件变得更简单,发明了JSX来让编写元素和组件变得更容易.

目前,浏览器本身并不理解JMX.因此,编译器需要使用Babel或Webpack等工具将<div>something</div>翻译成React.createElement("div", null, "something").如果您使用Next.js或Remix等框架,或者Vite或Deliver-react-app等构建工具,则该框架将为您处理这一步骤.

深入阅读


Javascript相关问答推荐

有没有方法在Angular中的bowser选项卡之间移动HTML?

单击树元素时阻止焦点事件触发?

如果使用React Select ,如何将CSS类添加到元素中?

如何在alpinejs中显示dev中x-for的元素

在JavaScript中检索一些文本

React Hooks中useState的同步问题

可以的.是否可以在不预编译的情况下使用嵌套 Select 器?

为什么从liveWire info js代码传递数组我出现错误?

Phaser框架-将子对象附加到Actor

通过嵌套模型对象进行Mongoose搜索

如何在angular中从JSON值添加动态路由保护?

为什么ngModel不能在最后一个版本的Angular 17上工作?'

如何将Openjphjs与next.js一起使用?

JSDoc创建并从另一个文件导入类型

连接到游戏的玩家不会在浏览器在线游戏中呈现

覆盖加载器页面避免对页面上的元素进行操作

如何在.NET Core中将chtml文件链接到Java脚本文件?

如何确保预订系统跨不同时区的日期时间处理一致?

令牌JWT未过期

FireBase FiRestore安全规则-嵌套对象的MapDiff