React整理总结(二、组件化开发)

1.分类

  • 根据组件的定义方式,可以分为:函数组件(Functional Component )和类组件(Class Component);
  • 根据组件内部是否有状态需要维护,可以分成:无状态组件(Stateless Component )和有状态组件(Stateful Component);
  • 根据组件的不同职责,可以分成:展示型组件(Presentational Component)和容器型组件(Container Component);
  • 函数组件、无状态组件、展示型组件主要关注UI的展示;
  • 类组件、有状态组件、容器型组件主要关注数据逻辑;

2.生命周期

  • constructor(){}
  • render
  • componentDidMounted | componentDidUpdatedProps, prevState, shot) | componentWillUnmount
  • shouldComponentUpdate | getSnapshotBeforeUpdate返回值传递给componentDidUpdate | getDerivedStateFromProps | componentDidCatch ERROR边界

3.组件间的通信

  • 父子通信 ,父传子 props(key=value),子传父回调函数,非父子组件context
// AComponent
export const ThemeContext = React.createContext();

<ThemeContext.Provider value={{}}>
<BComponent />
<CComponent />
</ThemeContext.Provider>

// BComponent
consol.log(this.context);

BComponent.context = ThemeContext;

// CComponent 函数式组件
function CCompontent() {
	return (<>
		<ThemeContext.Comsumer>
		{
			value => {}
		}
		</ThemeContext.Comsumer>
	</>)
}

  • 类型验证 props-type第三方库
  • Context的默认数据在Provider外面使用
  • 事务总线

4.setState的用法

  • 直接传递一个对象
  • 传递一个回调函数
this.setState((preState, props) => {
	return newSate
})
  • 第二个回调函数参数可以拿到最新的state
this.setState({msg: 'HELLO WORLD', () => {console.log(this.state.msg);}}
  • 在React 18以前,在React的合成事件和生命周期函数中,setState是异步的; 在setTimeout等函数和原生DOM事件中,setState是同步到。
  • 在React 18 以后,所有的setState都是批处理,所以都是异步的
  • 立即执行
flushSync(() => {
this.setState({msg: 'hello'});
});
console.log(this.state.msg) // hello
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘风xs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值