iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >react的component是什么
  • 357
分享到

react的component是什么

组件componentReact 2023-05-14 21:05:53 357人浏览 八月长安
摘要

本教程操作环境:windows7系统、React18版、Dell G3电脑。在React,组件(component),就是一个UI的单元,是封装起来的具有独立功能的UI部件。它的思想是,将要展示的内容,分成多个独立部分,每一个这样的部分,就

react的component是什么

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

在React,组件(component),就是一个UI的单元,是封装起来的具有独立功能的UI部件。它的思想是,将要展示的内容,分成多个独立部分,每一个这样的部分,就是一个组件,就有点像Android或者iOS中的控件。

组件就是页面上的一部分,大大小小的各种组件拼在一起就变成了一个完整的页面,就像我们玩的拼图,需要一块一块的拼接在一起才能变成一副完整的拼图。

0.png

一、组件的基本组成部分

每个组件,其实在代码中提现出来就是一个类,一个最简单的组件:

class Greeting extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

从上面的代码可以看到,组件和一般的类一样可以定义方法。对于组件来说,render()方法是非常重要的(必须实现),就是在这个方法返回组件的界面。在render()方法中,使用了jsX来定义组件的界面。关于render()方法,后面会进一步详述。

此外,组件还有两个重要的东西,一个是属性(props),一个是状态(state)。简单的说,组件的属性是父组件给它的(组件之间可以嵌套),存储的是父组件对子组件的要求,在组件内部可以对属性进行访问(使用),但不可以修改它;组件的状态,由组件自行定义和使用,用来存储组件当前状态,组件的状态可以修改。

二、组件的生命周期

组件的生命周期大体上可以分为三个阶段:展示(mounting),刷新(updating),消失(unmounting)。
在每个阶段中,又细分了几个步骤。

1. 展示阶段(Mounting)

就是组件被创建并插入视图的阶段,以下方法依次执行:

  • constructor(props)

组件创建的时候会被调用,在该方法内可以访问到由父组件传来的属性对象props。如果要重写这个方法,必须记得先写super(props);否则在这个组件内部就访问不了属性了(属性的内容稍后详述)。

  • componentWillMount()
  • render()
  • componentDidMount()

2. 刷新阶段(Updating)

当组件的属性(props)和状态(state)改变的时候会触发组件进行刷新,以下方法一次执行:

  • componentWillReceiveProps(nextProps)

组件的属性变化的时候会调用,这个方法中nextProps就是新的属性。如果想在该方法内更新状态,应该先确保属性当前值和新值不相同后再刷新状态。

  • shouldComponentUpdate()

这个方法返回true或者false决定组件的render()方法是否会被调用。

  • componentWillUpdate()
  • render()
  • componentDidUpdate()

3. 消失阶段(Unmounting)

组件被移除之后就会进入消失阶段,执行以下方法:

  • componentWillUnmount()

三、组件的属性、状态和方法

在组件的内部,要访问自身的属性、状态和方法,一般需要使用到this关键字,表示本组件的意思。

1. 组件的方法

访问组件的方法使用格式:
this.methodName(param1,param2,…)
如,在组件内部定义了方法:

_method()
{
console.log(‘method call ! ~~~~’);
}

要调用它:
this._method();

2. 组件的属性

上面提到,组件的属性,是由父组件给的,从意义上理解,组件的属性用来存储父组件对子组件的要求。
访问组件的属性格式:
this.props.propertyName
这里看到,与访问组件的方法不同,这里没有直接在this后就直接跟属性名,中间多了一个props。这个props其实是一个属性对象,上面我们提到属性是父组件给的,那么这个props对象就相当于把父组件给的所有的属性都封装起来,一个props对象像这样:

{
property1:value1,
property2:value2,
…
}

注意,在使用react的时候会经常遇到用这种形式表示的对象,也就是一个花括号内包含若干对属性名和属性值。
访问组件的属性的例子:
例如组件有一个属性height,那么要访问它:
this.props.height;
虽然属性不能修改,但我们能给组件属性一个默认值,也就是说,当父组件没有给该属性赋值的时候,使用的一个默认值。
例如给组件CustomButton定义默认属性:

CustomButton.defaultProps = {
  color: 'blue'
};

另外还可以给组件的属性指定类型,在开发模式下这个如果父组件设置的属性不符合子组件设定的类型的话,会输出警告,在生产模式下就不会对类型进行检查,例如,设定CustomButton组件的color属性的类型为字符:

CustomButton.propTypes = {
  color: React.PropTypes.string
};

3. 组件的状态

组件的状态,就是用来存储组件的当前状态。
访问状态的格式:
this.state.propertyName
例如,组件有个属性height,那么要访问它对应的状态:
this.state.height;
与组件的属性类似,这里也没有直接在this后跟属性名,中间多了个state。类似的,state也是一个状态对象,把所有属性对应的状态封装起来。既然是对象,当然也可以使用上面说的“花括号内包含若干对属性名和属性值”的形式来表示,像这样:

{
property1:value1,
property2:value2,
…
}

上面提到,属性是父组件给的,不可修改,但状态可以修改。由于状态是一个对象,因此修改状态,就是给this.state赋予一个新的对象:

this.state = {
propertyName1:newValue1,
propertyName2:newValue2,
…
};

或者使用setState()方法,这个方法会将新的、旧的状态合并,因此只需要填入有变化的状态就好,

this.setState({
propertyName1:newValue1,
propertyName2:newValue2,
…
});

例如,修改一个组件的两个状态height和width分别为100和200:

this.state = {
height:100,width:200,
};

this.setState({
height:100,
width:200,
});

四、组件的render()方法

上面提到,render()方法是专门用来返回组件界面的。从组件的生命周期可以看出,在组件第一次加载的时候,或者组件的props或state有变化的时候,render()方法都会被调用,也就是说这两种情况下,组件会重画它的界面,因此在render()方法中尽量只做有关界面的事情。
组件的界面也是由一个或多个其他的组件组成的,比如View、Button、Text等等。需要注意的是,如果当多个子组件都需要使用同一个状态(状态可能会改变)的时候,为了减少对状态(属性)的访问次数,建议在render()方法中,先用一个变量存储该状态的当前值,然后在各个组件中使用这个变量,而不是在各个组件中多次访问这个状态。
例如,这里组件Text、Input、Image都是用到了this.state.value,推荐的写法是:

 render() {
    const value = this.state.value;
    return (
    <View>
      <Text>{value}</Text>
      <Input value={value} onChange={this.handleChange} />
      <Image source = {{ uri : value }}/>
    </View>
    );
  }

在上面的例子当中,return()方法内部是由的是JSX,ReactNative支持的表示界面的一种语法,类似于XML或者html。这个可以去查查看。
这个例子里,组件使用的都是this.state.value。这里可能就存在疑惑,在组件中什么时候应该用props,什么时候应该用state。下面看,属性和状态的使用场景。

五、属性和状态的使用场景

在组件中应该用props还是state,取决于这个信息是来自于组件内部还是来自于组件外部。什么意思呢?
例如,自定义一个组件CustomView(如下图)。CustomView包括一个输入框组件Input和一个文本框组件CustomText。现在要求CustomText显示的文本随Input中输入的内容变化(输入什么就显示什么)。

1.png

对于组件CustomView,其子组件CustomText的要显示的文本来自于子组件Input,都是在CustomView的内部,因此CustomView可以用this.state.value来存储输入框的内容,然后CustomText就显示this.state.value。
那么站在组件CustomText的角度,假定CustomText内部包含一个Text组件,实际上文本是由Text组件显示的(如下图):

2.png

为了满足组件CustomText的文本随输入框的内容改变,就要求CustomView要将输入框的内容传到CustomText内部,这样CustomText的子组件Text才可以访问到。这就需要用到属性。如果CustomView通过属性textFromInput传给CustomText的话,在CustomText内部,就可以通过this.props.textFromInput访问到。
所以CustomView的render()方法应该是这样的:

render(){
     var value = this.state.value;
     return(
        <CustomText textFromInput = {value}/>
        <Input onChange = {this._inputValueChange}/>
     );
}

CustomText的render()方法应该是这样的:

render(){
     return(
        <Text>{this.props.textFromInput}</Text>
     );
}

这时候,只要实现每次输入内容变化的时候更新状态value,就可以实现CustomText的内随输入内容变化。上面onChange指向_inputValueChange方法,于是实现该方法:

this._inputValueChange(e){
    this.setState({
    value:e.target.value;
    });
}

【相关推荐:Redis视频教程、编程入门

以上就是react的component是什么的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: react的component是什么

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

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

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

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

下载Word文档
猜你喜欢
  • react的component是什么
    本教程操作环境:Windows7系统、react18版、Dell G3电脑。在React,组件(component),就是一个UI的单元,是封装起来的具有独立功能的UI部件。它的思想是,将要展示的内容,分成多个独立部分,每一个这样的部分,就...
    99+
    2023-05-14
    组件 component React
  • Component的React表格控件用法是什么
    这篇文章主要介绍“Component的React表格控件用法是什么”,在日常操作中,相信很多人在Component的React表格控件用法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Component...
    99+
    2023-06-04
  • Component里的React列表控件的用法是什么
    这篇文章主要介绍“Component里的React列表控件的用法是什么”,在日常操作中,相信很多人在Component里的React列表控件的用法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Compo...
    99+
    2023-06-04
  • react的component怎么使用
    本文小编为大家详细介绍“react的component怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“react的component怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在react中,c...
    99+
    2023-07-04
  • Component React应用怎么在Component之间跳转
    这篇文章主要介绍“Component React应用怎么在Component之间跳转”,在日常操作中,相信很多人在Component React应用怎么在Component之间跳转问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-06-04
  • Angular中 Component的作用是什么
    Angular中 Component的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。定义W3C为统一组件化标准方式,提出Web ...
    99+
    2024-04-02
  • component跳转的方法是什么
    本篇内容介绍了“component跳转的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Subject: 为什么design tim...
    99+
    2023-06-04
  • Object和Component的区别是什么
    这篇文章给大家介绍Object和Component的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  由于Componet引入了事件、行为,因此,它并非简单继承了Object...
    99+
    2024-04-02
  • java component注解的作用是什么
    Java组件注解的作用是为特定的类或方法提供元数据(metadata),以便在运行时进行处理。组件注解可以用于标记类、字段、方法或其...
    99+
    2023-09-23
    java
  • React的Hook是什么
    这篇文章主要介绍了React的Hook是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。State Hook这个例子用来显示一个计数器。当你点击按钮,计数器的值就会增加:i...
    99+
    2023-06-29
  • 什么是react
    本篇文章为大家展示了什么是react,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。react算是目前最火的js MVC框架。一、React基础1.React 虚拟D...
    99+
    2024-04-02
  • 怎么在SAP Fiori应用里使用React component
    这篇文章主要讲解了“怎么在SAP Fiori应用里使用React component”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在SAP Fiori应用里使用React compone...
    99+
    2023-06-04
  • React中的Ref是什么
    这篇文章主要介绍React中的Ref是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Intro在 React 项目中,有很多场景需要用到 Ref。例如使用 ref 属性获取 DO...
    99+
    2024-04-02
  • react中的flux是什么
    本篇内容主要讲解“react中的flux是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“react中的flux是什么”吧! re...
    99+
    2024-04-02
  • Spring注解中@Configuration和@Component的区别是什么
    本文小编为大家详细介绍“Spring注解中@Configuration和@Component的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring注解中@Configuration和@Component的区别是什么”文章能...
    99+
    2023-07-05
  • react element指的是什么
    本篇内容介绍了“react element指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react element是“React....
    99+
    2023-07-05
  • react-scripts是什么
    本篇内容主要讲解“react-scripts是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“react-scripts是什么”吧! ...
    99+
    2024-04-02
  • React Hook是什么
    这篇文章主要为大家展示了“React Hook是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“React Hook是什么”这篇文章吧。 ...
    99+
    2024-04-02
  • Spring注解@Configuration和@Component区别是什么
    本篇内容主要讲解“Spring注解@Configuration和@Component区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring注解@Configuration和@Com...
    99+
    2023-07-05
  • Component的图标和图片处理方法是什么
    本篇内容介绍了“Component的图标和图片处理方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这个React应用左上角的reac...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作