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

文章目录

前言

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等。

上一篇:微信小程序自定义组件的使用以及调用自定义组件中的方法


下一篇:装饰模式