ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【react框架】学习记录3-什么是react的组件、函数式与类式、受控与非受控、简单与复杂

2021-07-24 20:01:50  阅读:225  来源: 互联网

标签:受控 函数 render react MyComponent 组件 类式


文章目录

前言

react的组件主要有两种,函数式组件和类式组件。

ps:以下例子省略相关库的引入。

函数式组件与类式组件

函数式组件

<script type="text/babel">
	//1.创建函数式组件
	function MyComponent(){
		console.log(this); //此处的this是undefined,因为babel编译后开启了严格模式
		return <h2>我是用函数定义的组件(适用于【简单组件】的定义)</h2>
	}
	//2.渲染组件到页面
	ReactDOM.render(<MyComponent/>, document.getElementById('test'))
</script>

执行了ReactDOM.render(<MyComponent/>...)之后,发生了什么?

  1. React解析组件标签,找到了MyComponent组件。
  2. 发现组件是使用函数定义的,随后调用该函数,将返回的虚拟DOM转为真实DOM,随后呈现在页面中。

类式组件

<script type="text/babel">
	//1.创建类式组件
	class MyComponent extends React.Component { // 继承了react组件很多属性
		render(){
			//render是放在哪里的?—— MyComponent的原型对象上,供实例使用。
			//render中的this是谁?—— MyComponent的实例对象 也称为 MyComponent组件实例对象。
			console.log('render中的this:',this);
			return <h2>我是用类定义的组件(适用于【复杂组件】的定义)</h2>
		}
	}
	//2.渲染组件到页面
	ReactDOM.render(<MyComponent/>,document.getElementById('test'))
</script>

执行了ReactDOM.render(<MyComponent/>...)之后,发生了什么?

  1. React解析组件标签,找到了MyComponent组件。
  2. 发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用到原型上的render方法。
  3. 将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。

学习类式组件的前提知识点,建议看看我写的一个文章【es6入门】类的声明与继承,class与extends语法糖


非受控组件与受控组件

我是这么理解的,非受控是数据发现变化后需要人为去触发组件事件,组件才去处理数据;而受控组件是只要数据有变化,组件就会自动处理数据;

注意:一般受控组件优于非受控组件,因为非受控组件会可能使用refs(性能方面的考量);


简单组件和复杂组件

只需要记住:拥有状态的组件就是复杂组件,就是后面会讲到的state、prop等。

标签:受控,函数,render,react,MyComponent,组件,类式
来源: https://blog.csdn.net/pagnzong/article/details/119062963

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有