其他分享
首页 > 其他分享> > 使用 JSX 和 React 渲染的教程

使用 JSX 和 React 渲染的教程

作者:互联网

使用 JSX 和 React 渲染的教程

如果你是 React 新手,你可能听说过 JSX 或 JavaScript XML — 它是元素和组件的类似 XML 的代码。在本文中,我们将看看 JSX 是什么以及为什么我们应该在 React 应用程序中使用它。我们还将了解什么是元素,以及如何将它们呈现到 DOM。

什么是 JSX?

如前所述,JSX 是一种类似 XML 的代码,我们可以在使用 React 进行编码时使用它。它由 Facebook 团队开发,旨在提供更简洁的语法,帮助简化开发人员体验。让我们看一下我们的第一个示例:

 常量问候 =<h1>你好世界!</h1> ;

很简单,对吧?

我们这里拥有的既不是字符串也不是 HTML。这是JSX!在构建 UI 元素时,我们可以使用它来利用 JavaScript 的全部功能。虽然它不是强制性的,但它肯定是一个非常有用的工具——当我们在 JavaScript 代码中使用 UI 时,它做得很好。

使用 JSX

让我们扩展上面的示例以包含一个嵌入式表达式:

 const user = '理查德·伦伯特';  
 常量问候 =<h1>你好,{用户}</h1> ; ReactDOM.render(  
 问候,  
 document.getElementById('root')  
 );

我们使用花括号 {} 将变量嵌入到我们的 JSX 表达式中。在这些花括号中,我们可以嵌入任何有效的 JavaScript 表达式。如 用户名 或者 打印名称(用户) 例如。

笔记 : 我们会在文章后面详细看渲染,暂时不要太在意上面的渲染方法!

让我们嵌入一个被调用的 JavaScript 函数的结果:

 功能打印名称(用户){  
 返回 user.firstName + ' ' + user.lastName;  
 } 常量用户 = {  
 名字:'理查德',  
 姓氏:'记住'  
 }; 常量问候 = (  
 <h1>  
 您好,{printName(user)}!  
 </h1>  
 ); ReactDOM.render(  
 问候,  
 document.getElementById('root')  
 );

引擎盖下的 JSX

那么,当我们渲染组件时,JSX 到底发生了什么?

 功能问候(){  
 返回<h1>你好世界!</h1>  
 }

每个元素都由 问候 组件被分解成 React.createElement 来电。上面的例子变成:

 功能问候(){  
 return React.createElement("h1", {}, "Hello, World!")  
 }

React.createElement()

让我们看另一个例子:

 常量问候 = (  
 <h1 className="speak">  
 你好世界!  
 </h1>  
 );

编译后,此代码如下所示:

 常量问候 = React.createElement(  
 'h1',  
 {className: 'speak'},  
 '你好世界!'  
 );

这两个代码块是相同的。本质上一个对象是这样创建的:

 常量问候= {  
 类型:'h1',  
 道具: {  
 className: '说话',  
 孩子们:“你好,世界!”  
 }  
 };

这个对象被称为 React 元素,它的功能很像你在屏幕上看到的描述。 React 使用这些对象来构建 DOM 并使其保持最新。

本质上,JSX 只是在制作 React.createElement(component, props, …children) 功能更加赏心悦目。另一个例子:

 <Navbar backgroundColor = "purple" opacity = {0.8}>  
 菜单栏  
 </Navbar>

将转换为:

 React.createElement(导航栏,{  
 背景颜色:“紫色”,  
 不透明度:0.8  
 }, “菜单栏”);

现在让我们继续看看更多的概念。

JSX 中的道具

我们将在下一篇文章中深入探讨道具!现在,最好记住在构建组件时——它们通常会渲染子组件,这需要数据才能正确渲染。我们传入的参数就是我们所说的props。在 JSX 中,有几种方法可以做到这一点,例如:

 // 如果没有传递值,则默认为“true”  
 <MyComponent connected />  
 // 作为 props 传递的字符串字面量  
 <MyComponent user= "Bob Burger" />  
 // 表达式(下面的示例将评估为 10)  
 <MyComponent total = {1 + 2 + 3 + 4} />  
 // 传播属性:传递整个 props 对象  
 <MyComponent selected = {...this.state} />

笔记: 如果 陈述和 为了 循环不是表达式 JavaScript ,所以它们不能直接在 JSX 中使用!相反,您可以这样编码:

 函数编号类型(道具){  
 让回答;  
 if (props.number % 2 == 0) {  
 答案 =<strong>偶数</strong>;  
 } 别的 {  
 答案=<i>奇数</i>;  
 }  
 返回<div>{props.number} 是一个 {answer} 数字</div>;  
 }

我们可以看到我们的 props 被传递到条件中,被评估,然后返回——所有这些都是通过 JSX 完成的。

JSX 中的孩子

随着您的应用程序变得越来越大,您会发现一些组件需要渲染子级。然后这些子组件还需要渲染更多的子组件,依此类推!使用 JSX,我们可以很好地管理这些树状的元素结构。经验法则是——组件返回的任何元素都会成为它的子元素。

让我们快速看一下使用 JSX 渲染子元素的方法:

字符串文字

 <MyComponent>我是个孩子!</MyComponent>

在这个非常基本的示例中,字符串 我是个孩子 是的孩子 我的组件 并且可以通过 道具.儿童 我的组件 .

JSX 元素作为子元素

假设我们要返回一个 HTML 孩子 <header> ,它有两个自己的孩子: <Nav /> <SearchBox /> .我们可以这样做:

 功能标题(道具){  
 返回 (  
 <header>  
 <Nav />  
 <SearchBox />  
 </header>  
 )  
 }

表达式

我们还可以将表达式作为子项传递,以渲染到我们的 UI。这对于待办事项列表应用程序非常有用,例如:

 功能待办事项(道具){  
 返回<li>{道具.内容}</li> ;  
 } 功能 TodoList() {  
 const todos = ['vacuum', '洗衣服', '找一个新客户'];  
 返回 (  
 <ul>  
 {todos.map((内容) =><TodoItem key={content} content={content} /> )}  
 </ul>  
 );  
 }

功能

函数在处理重复时很有用,例如渲染重复的 UI 元素。我们可以创建 React 会自动为我们渲染的结构。

让我们看一个例子,我们使用 。地图() 在网站上创建新页面的功能:

 // 当前页面数组  
 常量页 = [  
 {  
 编号:1,  
 文本:“家”,  
 关联: ”/”  
 },  
 {  
 编号:2,  
 文字:“关于”,  
 链接:“/关于”  
 },  
 {  
 编号:3,  
 text: "联系方式",  
 链接:“/联系人”  
 }  
 ];  
 // 渲染一个<ul>这会产生<li>孩子们  
 功能导航(){  
 返回 (  
 <ul>  
 {pages.map(page => {  
 返回 (  
 <li key={page.id}>  
 <a href={page.link}>{page.text}</a>  
 </li>  
 );  
 })}  
 </ul>  
 );  
 }

要向我们的网站添加一个新页面,我们只需要向页面的数组中添加一个新对象,然后让 React 处理其余部分。

渲染元素

正如我确信您在本文中看到的那样,在使用 JSX 时,我们正在使用元素来渲染到我们的页面中。一个 元素 描述您在屏幕上看到的内容:

 常量元素 =<h1>你好!</h1> ;

像这样的多个元素在组合时将形成组件。我们将在下一篇文章中详细介绍组件。

将我们的元素渲染到 DOM

通常,我们会有一个 <div> 像这样,在我们的 HTML 中:

 <div id="root"></div>

这就是我们的 DOM 节点。它里面的一切都由 React DOM 处理。

为了将 React 元素渲染到我们的根节点,我们将两者都传递给 ReactDOM.render() ,像这样:

 常量元素 =<h1>你好!</h1> ;  
 ReactDOM.render(element, document.getElementById('root'));

你好! 将呈现到我们的页面。

更新渲染元素

请注意,React 元素是不可变的!创建元素后,您无法更改其子元素或属性。如果希望更新 UI,您需要创建一个新元素并将其传递给 ReactDOM.render() .

概括

我们去吧!我们已经介绍了 JSX 和渲染的基础知识。我希望你开始看到这些概念对我们作为开发人员、构建 React 应用程序有多么有用。

通过利用 JSX 的力量在 JavaScript 中传递元素,我们正在构建非常可行的代码。 JSX 的结构与 React 配合得非常好,尽管 JSX 不是强制性的,但它带来了奇妙的开发体验。

结论

如果你喜欢这篇博文,请关注我 推特 我每天都会在这里发布有关技术相关的事情!

让我们联系

最初发表于 https://dev.to 2022 年 9 月 6 日。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/22014/08540708

标签:教程,渲染,元素,React,组件,JSX,我们
来源: https://www.cnblogs.com/amboke/p/16663979.html