React 初学者: JSX 简介 四
React 是一个用于构建用户界面的声明性、高效和灵活的 JavaScript 库。但不是使用常规的 JavaScript,React 代码应该用一种叫做 JSX 的东西来编写。 **让我们看一个示例 JSX 代码: **
const ele = <h1>This is sample JSX</h1>;
上面的代码片段有点像 HTML,它也使用了类似 JavaScript 的变量,但既不是 HTML 也不是 JavaScript,它是 JSX。JSX 基本上是常规 JavaScript 的语法扩展,用于创建 React 元素。然后将这些元素渲染到 React DOM。我们将在下一篇文章中详细了解渲染和 DOM。 为什么选择 JSX?
- 它比普通 JavaScript 更快,因为它在转换为普通 JavaScript 时执行优化。
- 它使我们更容易创建模板。
- React 没有将标记和逻辑分隔在单独的文件中,而是为此目的使用了_组件。_我们将在后续文章中详细了解组件。
在 JSX 中使用 JavaScript 表达式:在 React 中,我们可以在 JSX 中使用普通的 JavaScript 表达式。要将任何 JavaScript 表达式嵌入到用 JSX 编写的代码中,我们必须将该表达式包装在花括号 {} 中。考虑下面的程序,写在index.js文件中:
javascript
|
import React from
'react'``````;
import ReactDOM from
'react-dom'``````;
const name =
"Learner"``````;
const element = <h1>Hello,
{ name }.Welcome to GeeksforGeeks.< /h1>;
ReactDOM.render(
element,
document.getElementById(``````"root"``````)
);
|
**输出: **
在上面的程序中,我们嵌入了 javascript 表达式_const name = “Learner”; _在我们的 JSX 代码中。顶部有几行用于导入一些 React API,这些将在进一步的文章中解释。我们通过将除 if-else 语句之外的任何 JavaScript 表达式包装在花括号中来嵌入对 JSX 中的任何 JavaScript 表达式的使用。但是我们可以在 JSX 中使用条件语句代替 if-else 语句。下面是 JSX 中嵌入条件表达式的示例:
javascript
|
import React from
'react'``````;
import ReactDOM from
'react-dom'``````;
let i = 1;
const element = <h1>{ (i == 1) ?
'Hello World!'
:
'False!'
} < /h1>;
ReactDOM.render(
element,
document.getElementById(``````"root"``````)
);
|
**输出: **
在上面的示例中,检查变量 i 的值是否为 1。因为它等于 1,所以字符串 ‘Hello World!’ 返回到 JSX 代码。如果我们修改变量 i 的值,则将返回字符串 ‘False’。
JSX 中的属性: JSX 允许我们对 HTML 元素使用属性,就像使用普通 HTML 一样。但是,JSX 没有使用 HTML 的正常命名约定,而是使用驼峰式命名约定来表示属性。例如,HTML中的_class变成 JSX 中的__className_。这背后的主要原因是 HTML 中的某些属性名称(例如“类”)是 JavaScript 中的保留关键字。因此,为了避免这个问题,JSX 对属性使用驼峰式命名约定。我们还可以在 JSX 中使用自定义属性。对于自定义属性,此类属性的名称应以data-为前缀。在下面的示例中,我们为 标签 使用了一个名为
data-sampleAttribute的自定义属性。
javascript
|
import React from
'react'``````;
import ReactDOM from
'react-dom'``````;
const element = <div><h1 className =
"hello"``````>Hello Geek</h1>
<h2 data-sampleAttribute=``````"sample"``````>Custom attribute</h2>< /div>;
ReactDOM.render(
element,
document.getElementById(``````"root"``````)
);
|
指定属性值:JSX 允许我们以两种方式指定属性值:
- **至于字符串文字:**我们可以使用引号将属性的值指定为硬编码字符串:
const ele =
Hello!
;- **作为表达式:**我们可以使用花括号 {} 将属性指定为表达式:
const ele =
Hello!
;**在 JSX 中包装元素或子元素:**考虑一次要渲染多个标签的情况。为此,我们需要将所有这些标记包装在父标记下,然后将此父元素呈现到 HTML。所有子标签都称为子标签或该父元素的子标签。 请注意,在下面的示例中,我们如何将 h1、h2 和 h3 标签包装在单个 div 元素下并将它们呈现为 HTML:
javascript
|
import React from
'react'``````;
import ReactDOM from
'react-dom'``````;
const element = <div>
<h1>This is Heading 1 < /h1>
<h2>This is Heading 2</h2 >
<h3>This is Heading 3 < /h3>
</div > ;
ReactDOM.render(
element,
document.getElementById(``````"root"``````));
|
输出:
JSX 中的注释: JSX 允许我们使用注释,因为它允许我们使用 JavaScript 表达式。JSX 中的注释以**/开头,以****/**结尾。我们可以在 JSX 中添加注释,方法是将它们包裹在花括号 {} 中,就像我们在表达式中所做的那样。下面的例子展示了如何在 JSX 中添加注释:
javascript
|
import React from
'react'``````;
import ReactDOM from
'react-dom'``````;
const element = <div><h1>Hello World !</h1>
{/ * This is a comment
in
JSX * /}
</div>;
ReactDOM.render(
element,
document.getElementById(``````"root"``````));
|
参考:
- 原文作者:知识铺
- 原文链接:https://geek.zshipu.com/post/react/save01/React-%E5%88%9D%E5%AD%A6%E8%80%85-JSX-%E7%AE%80%E4%BB%8B-%E5%9B%9B/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com