如何创建ReactElement-创新互联

这篇文章主要介绍如何创建React Element,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站制作,高端网页制作,对服务器租用等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业营销推广优化,H5建站,响应式网站。

在上一章节中,我们使用 create-react-app 工具搭建了一个基于 react 的开发环境,那么从这一章起,我们就正式开始 react 框架的学习。

打开 my-app 项目,找到 src/index.js 文件,我们在上一章中提到过,这个文件是整个应用的入口,当页面刷新时,会主动去加载这个文件,那这里我们直接删掉这个目录下的其他文件,只保存 index.js 即可。然后删除这个文件中的默认代码,并调用console.log("in")方法在控制台上进行输出。

使用 yarn start 命令启动项目,打开浏览器开发者工具,可以看到控制台成功打印。使用脚手架工具搭建的开发环境中,已经实现了热加载的功能,也就是说,当我们完成 js 代码的修改之后,不在需要频繁的通过刷新来查看页面的效果,在每次修改保存之后,浏览器会自动的完成页面的刷新。比如这里,我把这里输出的字符串稍稍改一下,然后保存,可以看到控制台已经将刚刚修改的字符串输出了。

React Element

好,回到 react 框架的知识点上,我们知道,一个页面是由很多的节点元素组合在一起的,比方说,h2 元素,p 元素,ul 元素等等。那实际上,在 react 中,最小的组成单元也是元素,只是我们将它称之为 react element。那么,我们如何创建一个 react element 呢?

比方说,这里我需要在页面中显示一个 h2 的元素,里面是一个 Hello World 字符串,那首先我就需要创建这样的一个 react element。

react 框架中,有两个核心对象 React 和 ReactDOM。这里就可以通过 React 对象来创建一个 h2 元素,首先引入这个对象。

import React from "react";

然后调用 createElement 方法来创建元素。这个方法的第一个参数是我们需要创建的节点类型,这里我需要创建一个 h2 元素,那参数就是 h2,第二个参数是这个元素拥有的属性设置,没有属性的时候可以直接给 null 的值,第三个参数就是该元素的子元素,这里我们需要在 h2 元素下显示 Hello World,那我们就可以把这个字符串当成它的子元素传递进去。这个方法的返回值就是一个 react element。我们可以在控制台上打印这个对象。

const h2Ele = React.createElement("h2", null, "Hello World");
console.log(h2Ele)

从控制台上我们可以看到,它就是一个普通的 javascript 对象,这个对象拥有一些属性,用来描述真实的元素。比方说: 这里的 type 属性就是用来描述这个元素的类型,也就是说这个对象映射的是一个 h2 元素,同理,这里的 props.children 指的就是这个元素下面的子元素,也就是的 Hello World 字符串。

如何创建React Element

现在,我们完成了 react element 的创建,下一步就需要将这个元素变成真正的 DOM 节点添加到我们的页面中去。这时,就需要使用 ReactDOM 对象来完成真实节点的渲染。首先引入这个对象。

import ReactDOM from "react-dom"

在 ReactDOM 对象上,有一个 render 方法,就是专门用来将 react element 渲染成真实 DOM 的。这个方法接收 2 个参数。第一个参数是我们需要渲染的 react element,这里我们就直接使用刚刚创建的那个 h2 元素;第二个参数是需要将这些元素显示到页面的哪个地方。打开 index.html 页面,我们可以发现,在这个页面中有一个空白的 p 元素,这个元素我们称之为叫容器,专门用来存放由 react 产生的这些元素的。那么这里,我们就可以把这个元素当成 render 方法的第二个参数。保存之后,查看页面,我们就可以看到在页面上显示了一个 Hello World。

ReactDOM.render(h2Ele, document.querySelector("#root"))

下一步,我们如何给这个节点增加样式呢?回到刚刚创建节点的那个方法,实际上,我们可以在这个方法的第二个参数中,来设置这个节点的样式,比方说,我现在需要让这个 h2 的字体颜色变成红色,那么直接指定 style color: red 就可以了。

const h2Ele = React.createElement("h2", {
  style: {
    color: "red"
  }
}, "Hello World");

除了使用 style 属性以外,我们依然可以通过引入外部样式表来修饰。这里我新建一个 css 文件,添加一个 class 选择器,设置字体大小为 50px,然后在 index.js 中,我们使用 import 引入这个 css 文件:

// theme.css
.msg {
  font-size: 50px;
}

// index.js
import "./theme.css"

然后在创建这个元素的时候,指定这个元素的 className 为 msg 就可以了,这时我们可以看到这个样式表就应用到当前这个元素了。

const h2Ele = React.createElement("h2", {
  style: {
    color: "red"
  },
  className: "msg"
}, "Hello World");

多个子元素的传递方式

接下来,我想再渲染一个列表应该如何操作呢?比方说,在这个列表中要显示 3 个选项,分别是 HTML,CSS 和 JAVASCRIPT。那我们第一步应该要创建这些节点。

首先引入 React 对象,使用 createElement 方法创建第一个 li 元素,第一个显示 HTML,然后再创建两个相同的元素,分别显示 CSS 和 JAVASCRIPT。

const li_01 = React.createElement("li", null, "HTML")
const li_02 = React.createElement("li", null, "CSS")
const li_03 = React.createElement("li", null, "JAVASCRIPT")

子元素创建完成之后,我们再来创建一个 ul 元素,因为这个ul元素有多个子元素,因此,这里有两种方式可以来传递子元素,第一种,我们可以把每一个子元素都当成参数传递给 createElement 方法

const ulEle = React.createElement("ul", null, li_01, li_02, li_03)

完成之后,将 ulEle 元素通过 render 方法渲染出来。查看页面,可以看到列表已经成功显示。

第二种方法,我们还可以将这些子元素变成一个数组交给 createElement 方法完成渲染,查看页面,我们可以看到列表依然正常显示,但是控制台给咱们抛出了一个警告:

如何创建React Element

这个警告的原因是,如果我们通过数组迭代的方式来创建子元素的话,我们需要给每一个子元素添加一个key的属性,而且这个属性的值,在同级元素中必须是唯一且不变的。那这里,我们给每一个li元素都增加一个key,值得话,让他们保证唯一就可以了。再查看页面,这时警告就消失了。

const li_01 = React.createElement("li", { key: 0 }, "HTML")
const li_02 = React.createElement("li", { key: 1 }, "CSS")
const li_03 = React.createElement("li", { key: 2 }, "JAVASCRIPT")

当然,这里我们还可以定义一个数组,然后通过迭代数组来产生这些li元素,这样可以简化一下我们的代码:

const arr = ["HTML", "CSS", "JAVASCRIPT"]
const liEles = arr.map((item, index) => {
  return React.createElement("li", {
    key: index
  }, item)
})
const ulEle = React.createElement("ul", null, liEles)

以上是“如何创建React Element”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:如何创建ReactElement-创新互联
转载源于:http://pwwzsj.com/article/ejjsd.html