1. 函数式组件
//1. 创建函数式组件
function MyComponent(){
console.log(this)
//此处的this是undefined, 因为需要经过babel翻译, babel在翻译之后开启了严格模式,"use strick"
// 严格模式禁止自定义函数中的this指向window
// 所以this指向了undefined
// 如果不是严格模式, 则指向window
return <h2>我是一个函数式组件</h2>
}
//2.渲染组件到页面
ReactDOM.render(<MyComponent/>, document.getElementById('root'))
/**
* 执行了ReactDOM.render(<MyComponent/>.....之后, 发生了什么?)
* 1. React解析组件标签, 找到了MyComponent组件
* 2. 发现组件时使用函数定义的, 随后会调用该函数,将返回的虚拟DOM转换为真实的DOM,随后搜呈现在页面上。
*/
2. 类式组件
//1. 创建类式组件
class MyComponent extends React.Component{
render(){
console.log('render中的this:',this)
/*
* render式放在哪里的?——MyComponent的原型对象上, 供实例使用
* render中的this是谁? ——MyComponent的实例对象,也就是的MyComponent组件的实例兑现。
*/
return <h2>我式类式组件</h2>
}
}
//2.渲染组件到页面
ReactDOM.render(<MyComponent/>, document.getElementById('root'))
/**
* 执行了ReactDOM.render(<MyComponent/>.....之后, 发生了什么?)
* 1. React解析组件标签, 找到了MyComponent组件
* 2. 发现组件时使用类定义的, 随后new出来该组件的实例,并通过该实例调用到原型上的render方法。
* 3. 将render返回的虚拟DOM转为真实的DOM, 随后呈现在页面上。
*/