广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >如何声明react组件
  • 952
分享到

如何声明react组件

2024-04-02 19:04:59 952人浏览 八月长安
摘要

这篇文章主要为大家展示了“如何声明React组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何声明react组件”这篇文章吧。

这篇文章主要为大家展示了“如何声明React组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何声明react组件”这篇文章吧。

声明react组件的方式有3种:1、利用函数式定义无状态组件;2、利用 “React.createClass()”方法来定义组件;2、利用“React.Component()”方法以es6的形式来定义组件。

如何声明react组件

教程操作环境:windows7系统、react17.0.1版、Dell G3电脑。

react声明(创建)组件的方式:

React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归;

具体的三种方式:

  • 函数式定义无状态组件

  • React.createClass()定义组件

  • React.Component()定义组件

虽然有三种方式可以定义react的组件,那么这三种定义组件方式有什么不同呢?或者说为什么会出现对应的定义方式呢?下面就简单介绍一下。

无状态函数式组件

创建无状态函数式组件形式是从React 0.14版本开始出现的。它是为了创建纯展示组件,这种组件只负责根据传入的props来展示,不涉及到要state状态的操作。具体的无状态函数式组件,其官方指出:

在大部分React代码中,大多数组件被写成无状态的组件,通过简单组合可以构建成其他的组件等;这种通过多个简单然后合并成一个大应用的设计模式被提倡。

无状态函数式组件形式上表现为一个只带有一个render方法的组件类,通过函数形式或者ES6 arrow function的形式在创建,并且该组件是无state状态的。具体的创建形式如下:

function HelloComponent(props, ) {
  return <div>Hello {props.name}</div>
}
ReactDOM.render(<HelloComponent name="Sebastian" />, mountnode)

无状态组件的创建形式使代码的可读性更好,并且减少了大量冗余的代码,精简至只有一个render方法,大大的增强了编写一个组件的便利,除此之外无状态组件还有以下几个显著的特点:

无状态组件的创建形式使代码的可读性更好,并且减少了大量冗余的代码,精简至只有一个render方法,大大的增强了编写一个组件的便利,除此之外无状态组件还有以下几个显著的特点:

  • 组件不会被实例化,整体渲染性能得到提升

    因为组件被精简成一个render方法的函数来实现的,由于是无状态组件,所以无状态组件就不会在有组件实例化的过程,无实例化过程也就不需要分配多余的内存,从而性能得到一定的提升。

  • 组件不能访问this对象

    无状态组件由于没有实例化过程,所以无法访问组件this中的对象,例如:this.ref、this.state等均不能访问。若想访问就不能使用这种形式来创建组件

  • 组件无法访问生命周期的方法

    因为无状态组件是不需要组件生命周期管理和状态管理,所以底层实现这种形式的组件时是不会实现组件的生命周期方法。所以无状态组件是不能参与组件的各个生命周期管理的。

  • 无状态组件只能访问输入的props,同样的props会得到同样的渲染结果,不会有副作用

无状态组件被鼓励在大型项目中尽可能以简单的写法来分割原本庞大的组件,未来React也会这种面向无状态组件在譬如无意义的检查和内存分配领域进行一系列优化,所以只要有可能,尽量使用无状态组件。

React.createClass

React.createClass 是react刚开始推荐的创建组件的方式,这是ES5的原生的javascript来实现的React组件,其形式如下:

var InputControlES5 = React.createClass({
    propTypes: {//定义传入props中的属性各种类型
        initialValue: React.PropTypes.string
    },
    defaultProps: { //组件默认的props对象
        initialValue: ''
    },
    // 设置 initial state
    getInitialState: function() {//组件相关的状态对象
        return {
            text: this.props.initialValue || 'placeholder'
        };
    },
    handleChange: function(event) {
        this.setState({ //this represents react component instance
            text: event.target.value
        });
    },
    render: function() {
        return (
            <div>
                Type something:
                <input onChange={this.handleChange} value={this.state.text} />
            </div>
        );
    }
});
InputControlES6.propTypes = {
    initialValue: React.PropTypes.string
};
InputControlES6.defaultProps = {
    initialValue: ''
};

与无状态组件相比,React.createClass和后面要描述的React.Component都是创建有状态的组件,这些组件是要被实例化的,并且可以访问组件的生命周期方法。但是随着React的发展,React.createClass形式自身的问题暴露出来:

  • React.createClass会自绑定函数方法(不像React.Component只绑定需要关心的函数)导致不必要的性能开销,增加代码过时的可能性。

  • React.createClass的mixins不够自然、直观;React.Component形式非常适合高阶组件(Higher Order Components--HOC),它以更直观的形式展示了比mixins更强大的功能,并且HOC是纯净的JavaScript,不用担心他们会被废弃。HOC可以参考《无状态组件(Stateless Component) 与高阶组件》。

React.Component

React.Component是以ES6的形式来创建react的组件的,是React目前极为推荐的创建有状态组件的方式,最终会取代React.createClass形式;相对于 React.createClass可以更好实现代码复用。将上面React.createClass的形式改为React.Component形式如下:

class InputControlES6 extends React.Component {
    constructor(props) {
        super(props);

        // 设置 initial state
        this.state = {
            text: props.initialValue || 'placeholder'
        };

        // ES6 类中函数必须手动绑定
        this.handleChange = this.handleChange.bind(this);
    }

    handleChange(event) {
        this.setState({
            text: event.target.value
        });
    }

    render() {
        return (
            <div>
                Type something:
                <input onChange={this.handleChange}
               value={this.state.text} />
            </div>
        );
    }
}
InputControlES6.propTypes = {
    initialValue: React.PropTypes.string
};
InputControlES6.defaultProps = {
    initialValue: ''
};

以上是“如何声明react组件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: 如何声明react组件

本文链接: https://www.lsjlt.com/news/87119.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何声明react组件
    这篇文章主要为大家展示了“如何声明react组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何声明react组件”这篇文章吧。 ...
    99+
    2022-10-19
  • css如何声明分组
    小编给大家分享一下css如何声明分组,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 咱们既梗概对决议器进行分组,也或者对声明分...
    99+
    2022-10-19
  • php如何声明一个数组
    在 PHP 中声明一个数组非常简单,可以使用两种方式:直接赋值和 array() 函数。直接赋值方式使用直接赋值方式,可以在一个语句中定义并初始化一个数组。语法如下:$myArray = array("apple", &...
    99+
    2023-05-19
  • php中如何声明一个数组
    这篇文章主要介绍“php中如何声明一个数组”,在日常操作中,相信很多人在php中如何声明一个数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中如何声明一个数组”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-30
  • 如何在php中声明数组长度
    PHP是一种常用的服务器端脚本语言,它支持多种数据类型,其中数组是一种非常常用的数据类型。在PHP中,我们可以通过各种方式来声明和使用数组。本文将着重介绍如何在PHP中声明数组长度。一、PHP数组简介在PHP中,数组可以包含一个或多个值,这...
    99+
    2023-05-19
  • React函数组件和类组件的区别及说明
    目录React函数组件和类组件区别函数组件类组件区别React函数式组件和类组件的优缺点1.类组件的性能消耗比较大2.函数式组件性能消耗小React函数组件和类组件区别 定义组件有两...
    99+
    2022-11-13
    React函数组件 React类组件 React函数
  • Angular入口组件与声明式组件的区别有哪些
    小编给大家分享一下Angular入口组件与声明式组件的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言组件是Angu...
    99+
    2022-10-19
  • js如何捆绑TypeScript声明文件
    小编给大家分享一下js如何捆绑TypeScript声明文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前话TypeScript...
    99+
    2022-10-19
  • VB.NET如何声明API
    这篇文章主要介绍了VB.NET如何声明API,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们都知道在VB6里面可以用API函数来进行子类化,以处理自身的窗体过程;如果跨进程...
    99+
    2023-06-17
  • PHP中如何声明和操作三维数组
    PHP是一种流行的编程语言,经常用于构建动态web应用程序。在PHP中声明和操作数组是一个经常遇到的需求。PHP支持多种类型的数组,其中包括二维和三维数组。本文将介绍如何声明和操作PHP中的三维数组。什么是三维数组?三维数组是一个包含多个二...
    99+
    2023-05-14
  • Java-如何声明变量
    Java 如何声明变量 在Java中,声明一个变量需要指定变量的类型和名称,基本语法如下: 数据类型 变量名; 其中,数据类型可以是Java中的任意一种数据类型,如int,float,double等等...
    99+
    2023-09-30
    java 开发语言
  • CSS如何结合选择器和声明的分组
    本篇内容主要讲解“CSS如何结合选择器和声明的分组”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS如何结合选择器和声明的分组”吧! 我们可以在一个规则中结...
    99+
    2022-10-19
  • 聊聊php如何声明和操作一维数组
    在PHP中,数组是一种非常重要的数据类型之一。数组可用于在一个变量中存储一个或多个值。数组分为以下两种类型:一维数组:只包含一个维度的数组。多维数组:包含多个维度的数组。在本文中,我们将重点讨论如何编写一维数组PHP。创建一维数组在PHP中...
    99+
    2023-05-14
  • React父组件如何调用子组件
    本篇内容介绍了“React父组件如何调用子组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!调用方法:1、类组件中的调用可以利用React....
    99+
    2023-07-04
  • React组件如何使用
    本篇内容主要讲解“React组件如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React组件如何使用”吧!组件的定义:理解:用来实现局部功能效果的代码和资源的集合(html/css/js...
    99+
    2023-07-05
  • React如何创建组件
    目录前言 组件介绍创建类组件 关于 state 关于 render 创建函数组件 渲染组件 合成组件 提取组件 Props 是只读的 前言 这节我们将介绍 React 中组件的类别...
    99+
    2022-11-12
  • css如何对选择器进行分组以及声明分组
    这篇文章主要介绍css如何对选择器进行分组以及声明分组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 我们既可以对选择器进行分组,也可以对声明分组。 假设您希望所有 h2 元素都...
    99+
    2022-10-19
  • C++中如何声明变量
    本篇文章为大家展示了C++中如何声明变量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C++变量声明的语法:extern int a;函数声明的语法:extern int func1(int len...
    99+
    2023-06-17
  • Go interface接口如何声明
    本篇内容介绍了“Go interface接口如何声明”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是接口接口是一种定义规范,规...
    99+
    2023-07-05
  • react组件间如何传值
    React组件间传值的方式有以下几种:1. 父组件向子组件传值:父组件可以通过props属性将数据传递给子组件。子组件可以通过pro...
    99+
    2023-09-13
    react
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作