# react-wpt
**Repository Path**: lu--shuo/react-wpt
## Basic Information
- **Project Name**: react-wpt
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: daily/wpt/0.0.1
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-01-14
- **Last Updated**: 2022-01-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## react
> react + react-dom 为什么分两个包?
因为react在设计之初就有跨平台的野望,所以react本身只专注vDom,具体到客户端的实现转换,有其他包来处理(react-dom for h5, react-native for native)。
## react-CDN-引入
为什么除了react/react-dom之外还要引入babel?
+ 为了解析jsx(html无法识别这种语法糖)
## 官方脚手架项目初始化
1. 初始化
```shell
npx create-react-app [project-name]
```
2. 配置项抽离
```shell
npm run eject
```
## jsx
1. 在react中,jsx是React.createElement的语法糖。
> createElement(type, props, children);
2. jsx内嵌入js表达式,只需要在js表达式外套一个花括号即可。
3. jsx的插槽可以嵌入数组,这意味着列表渲染直接嵌入数组就可以了。
4. jsx中给元素添加类名,不能用class(因为它与关键字class冲突),要用className
## 组件的本质即函数(类)
> react中,常规模式下,有两种类型组件。
注意点:
+ 组件必须以大驼峰形式命名,其他规范以小驼峰为准。
+ 严格的**单项数据流**!跟vue不一样,在react组件中,组件自身的props是只读的。
+ react具有严格的单项数据流的特征,这使得它的数据管理十分的清晰和严明,这意味着我们在使用react构建我们的应用时,只需把控组件本身的状态(state),和由外而内从外界传入的属性(props)即可。
### 函数式组件
形如
```jsx
const Box = (props) => {
return (
## 受控与非受控
### 受控
> 受控:将数据绑定在视图中,视图的展示受控于数据。用户与视图交互时,回调里更新数据,从而驱动视图更新。
比如 一个input框,value绑定为一个状态,交互回调里调用this.setState
```jsx
class Demo extends React.component{
state = {
value: ''
}
handleChange = (event) => {
this.setState({
value: event.target.value
})
}
handleClick = () => {
console.log(this.state.value);
}
render(){
const { value } = this.state;
return (