慕然回首, 学习Vue框架也已经两年了, 这两年里从学习写的小Dome到公司的项目, 从简单的但单页面到公司官网, H5项目, 在到小程序, 甚至还有它搞过几个简单的混合应用.
经过了这么久的相伴, 我也感觉到了Vue的一些局限, Vue自定义的语法指令很多, 需要查文档(比如Vue的filter, 我都是阅读别人源码的时候发现那种{* | *}写法, 然后去百度找了很久才知道, Vue文档也没咋详细说明), 而且也想着学习一下React换一种思维提升自己.
Start
首先呢, 还是要打开官网文档跟着写它的入门教程, 一个 井字棋(tic-tac-toe)游戏, 跟着教程走完大概就能了解React的大概了
- 一切都是方法, 模块化
- Facebook 开源的一个JavaScript库
- 特点:Declarative(声明式编码:只需要声明在哪里做什么,无需关心如何实现);Component-Based(组件化编码);高效-高效的DOM Diff算法,最小化页面重绘
- 单向数据流
- TypeScript支持更成熟
新建一个React Item
1 | npx create-react-app my-app |
hello, world
1 | ReactDOM.render( |
JSX语法
创建组件
1 | import React from "react" |
数据传递
1 | class Hello extends React.Component { |
条件渲染
1 | if (user) { |
或者可以这样
1 | let button |
还可以这样
1 | return ( |
生命周期 && state
props上的数据
1 | class Hello extends React.Component { |
然后我们通过 this.setState(Obejct)来实现视图的更新.
列表
1 | const list = ['pig', 'dog', 'chicken'] |
表单
通过原生的change事件中的参数来获取到输入的内容
1 | class NameForm extends React.Component { |
更多内容可以查看React表单文档
react生命周期
getDefaultProps // 初始化props属性,props来自其他组件
getInitialState // 初始化组件的状态
componentWillMount // 组件加载之前
render // 渲染
componentDidMount // 组件dom插入之后
componentWillReceiveProps // 接受父组件的传递
shouldComponentUpdate // 组件的更新处罚
componentWillUpdate // 组件要更新前
componentDidUpdate // 组件更新后
componentWillUnmount // 组件的销毁
Mounting : 挂载阶段
Updating: 运行时阶段
Unmounting: 卸载阶段
Error Handling: 错误处理
Todo Doem
1 | import React, { useState } from "react" |