首页 > 其他分享 >React(六):组件的两种创建方式

React(六):组件的两种创建方式

时间:2023-07-30 13:55:11浏览次数:47  
标签:定义 render DOM 创建 React MyComponent 组件

1.函数式组件

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>函数式组件</title>
    <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

    <!-- Don't use this in production: -->
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

</head>

<body>
    <!-- 准备一个容器 -->
    <div id="test"></div>

</body>

<script type="text/babel">

    //定义函数式组件
    function MyComponent() {
        console.log(this) //此处打印的是undefined,因为babel开启了严格模式,this不再指向windows
        return (
            <div>
                <h1>
                    <span>我是一个【函数式组件】,适用于【简单组件】的定义</span>
                </h1>
            </div>
        )
    }
    //react渲染
    ReactDOM.render(<MyComponent />, document.getElementById("test"))

    /*
    React是如何执行函数式组件的呢?
        1.React解析组件标签,找到了MyComponent组件
        2.发现组件是是使用函数式定义的,首先去执行函数,拿到返回的虚拟DOM,将其转化为真实DOM展示在页面上
    */
</script>

</html>

2.类组件

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>类组件</title>
    <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

    <!-- Don't use this in production: -->
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

</head>

<body>
    <!-- 准备一个容器 -->
    <div id="test"></div>

</body>

<script type="text/babel">

    //定义类组件
    class MyComponent extends React.Component {
        //Q:render在哪里?A:在MyComponent的原型对象上,供它的实例对象使用
        render() {
            //Q:这里的this是谁?A:是MyComponent对应的实例对象
            console.log(this)
            return (
                <div>
                    <h1>
                        <span>我是一个【类式组件】,适用于【复杂组件】的定义</span>
                    </h1>
                </div>
            )
        }
    }
    //react渲染
    ReactDOM.render(<MyComponent />, document.getElementById("test"))

    /*
    1.类组件的使用
        (1)必须继承React.Component类
        (2)必须有render()方法,且返回一个虚拟DOM
    2.React是如何执行类式组件的呢?
        (1)React解析组件标签,找到了MyComponent组件
        (2)发现组件是是使用类式定义的,首先去定义一个对应类的实例对象,然后执行实例对象的render方法
        (3)拿到方法返回的虚拟DOM,转化为真实DOM展示在页面上
    */
</script>

</html>

 

标签:定义,render,DOM,创建,React,MyComponent,组件
From: https://www.cnblogs.com/jmsstudy/p/17591361.html

相关文章

  • 无涯教程-jQuery - Spinner组件函数
    WidgetSpinner函数可与JqueryUI中的窗口小部件一起使用。Spinner提供了一种从一组中选择一个值的快速方法。Spinner-语法$("#menu").selectmenu();Spinner-示例以下是显示Spinner用法的简单示例-<!doctypehtml><htmllang="en"><head><metacharset="......
  • 无涯教程-jQuery - Progressbar组件函数
    小部件进度条功能可与JqueryUI中的小部件一起使用。一个简单的进度条显示有关进度的信息。一个简单的进度条如下所示。Progressbar-语法$("#progressbar").progressbar({value:37});Progressbar-示例以下是显示进度条用法的简单示例-<!doctypehtml><htmllang......
  • 无涯教程-jQuery - Menu组件函数
    小部件菜单功能可与JqueryUI中的小部件一起使用。一个简单的菜单显示项目列表。Menu-语法$("#menu").menu();Menu-示例以下是显示菜单用法的简单示例-<!doctypehtml><htmllang="en"><head><metacharset="utf-8"><title>jQueryUIM......
  • React 正在经历 Angular.js 的时刻吗?
    本文作者FrançoisZaninotto是资深React开发者,在看到React官方开始推广服务器组件后,他对此表示担忧,因为这会让现有的很多写法都失效。文章讨论了React和Next.js团队最近推广的服务器组件,这种新的构建Web应用程序的方式与大多数现有的React应用程序不符。因此,作者提......
  • quarkus依赖注入之一:创建bean
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos关于依赖注入对一名java程序员来说,依赖注入应该是个熟悉的概念,简单的说就是:我要用XXX,但我不负责XXX的生产以下代码来自spring官方,serve方法要使用MyComponent类的doWork......
  • 无涯教程-jQuery - Dialog组件函数
    小部件对话框函数可与JqueryUI中的小部件一起使用。对话框是在HTML页面上显示信息的一种不错的方法。对话框是一个带有标题和内容区域的浮动窗口。此窗口可以移动,调整大小,并且默认情况下可以使用"X"图标关闭。Dialog-语法$("#dialog").dialog();Dialog-示例以下是显示......
  • 【go语言】2.4.2 自定义包的创建和使用
    在Go中,任何一个目录都可以被视为一个包。创建自定义包的基本步骤是:新建一个目录,用于存放包的源文件。在新建的目录中编写Go代码,代码的第一行应该是 package包名。使用 import 语句在其他地方导入和使用这个包。接下来,我们详细看一下如何创建和使用自定义包。创建自......
  • 无涯教程-jQuery - Datepicker组件函数
    WidgetDatePicker函数可与JqueryUI中的窗口小部件一起使用。重点放在输入上,以小巧的方式打开交互式日历。Datepicker-语法$("#datepicker").datepicker();Datepicker-示例以下是显示DatePicker用法的简单示例-<!doctypehtml><htmllang="en"><head><m......
  • 6、Mysql创建用户以及授权
    文件夹就是数据库文件就是表数据行就是行 data下的mysql这个数据库里有张User表,里面保存了用户信息 showdatabases;查看所有数据库 usemysql;使用这个use数据库(进入这个文件夹) showtables;查看这个数据库下所有的表(文件)文件最后有个user,我们登陆mysql服务器......
  • 如何在 Django 中使用 MVT 创建一个基本项目?
    Django是一种用Python编写的流行Web框架,遵循Model-View-Template(MVT)架构模式。MVT是众所周知的Model-View-Controller(MVC)模式的变体,它提供了一种构建Web应用程序的结构化方法。了解如何在Django中使用MVT创建基本项目是开发健壮且可扩展的Web应用程序的基本步骤。在本......