什么是组件
在前端 ,组件是视图的片段
- 包含
- 视图标记
- 如 Vue 的 Template,React 的 JSX
 - 不是真实的DOM的HTML。要经过一系列的转化,最终成为真实的 DOM
 
 - 事件
- 绑定事件处理函数
 
 - 数据 
- 内部管理的
 
 - 逻辑
- 通过一种方法,从一个东西变为另一个东西,从运算的角度来说产出需要结果的过程
 
 - 外部的配置
 
 - 视图标记
 
组件一般是
内部管理数据集合 ( state )
外部传入配置集合 ( props )
类组件
组件类 -> 类组件
点击查看【codepen】
函数组件
hooks 来做
点击查看【codepen】
组渲件染的过程
- React 主动调用 Test 组件
 - 将属性集合转换对象 Props => { title:’This is a Function Component.’ }
 - 将对象作为 props 传入组件
- 函数组件传入形参
 - 类组件传入其构造器并且 super 执行
 
 - 替换 JSX 中的 props 或者 state 中的变量
 ReactDOM 将最终 React 元素通过一系列操作转换成真实的DOM进行渲染
组件调用规范
视图标记时 HTML 标签
<div></div>大驼峰写法作为一个React元素
<Test /> 组件-> JSX -> React元素<Test title="This is a Class Component." />
组件转换 React 元素
React.createElement(Test, {title: 'This is a Class Component.'})
组合组件 和 组件嵌套
把多个组件拆分出来,然后组合为一个组件中(App)
属性 props 和 数据/状态 state 区别
- state => 数据池 
- 对象 组件内部管理数据的容器
 - 组件内部可写可读
 
 - props => 属性池 
- 对象 外部调用组件时传入的属性集合
 - 组件内部可读不可写
 
 
state 与 props 的结合
假如 props 中有值 content 
content => props => outer => 外部配置
state => content => default => props.content
props 的只读性
函数组件注意
函数组件一定要是一个纯函数
纯函数能保证绝对的复用性
- 相同的入参保证返回相同的结果
 - 纯函数不可以修改入参
- 从设计上讲,在函数内部更改入参,其实是在组件运行时更改外部的配置。
 - 配置意义丧失
 - 该配置是使用组件者希望通过该配置达到对应的结果
 
 
