React 16 全新生命周期与废弃警告

生命周期变更对照表

废弃方法替代方案原因
componentWillMountconstructor + componentDidMountRender阶段可能重复执行
componentWillReceivePropsstatic getDerivedStateFromProps与Fiber异步渲染不兼容
componentWillUpdategetSnapshotBeforeUpdate提交前最后一刻获取DOM状态

新增安全生命周期

class ScrollTracker extends React.Component {
	// 替代 componentWillReceiveProps
	static getDerivedStateFromProps(nextProps, prevState) {
		return nextProps.id !== prevState.id
			? { scrollTop: 0 }
			: null;
	}

	// 提交前捕获DOM状态
	getSnapshotBeforeUpdate() {
		return this.listRef.scrollHeight;
	}

	// 基于快照更新
	componentDidUpdate(prevProps, prevState, snapshot) {
		if(snapshot !== null) {
			this.listRef.scrollTop += this.listRef.scrollHeight - snapshot;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值