KinoOfficial / ReactCourse

0 stars 0 forks source link

生命周期(类组件) #2

Open KinoOfficial opened 1 year ago

KinoOfficial commented 1 year ago
image
KinoOfficial commented 1 year ago
image
KinoOfficial commented 1 year ago

componentWillMount: 在渲染前调⽤,在客户端也在服务端。 (新版本不推荐) 如果使⽤该⽣命周期,注意控制台会有警告 在17版本改名为UNSAFE_componentWillMount(),18版本之后不再⽀持componentWillMount 这种写法

componentDidMount : 在第⼀次渲染后调⽤,只在客户端。之后组件已经⽣成了对应的DOM结构,可以通过this.getDOMNode()来 进⾏访问。 如果你想和其他JavaScript框架⼀起使⽤,可以在这个⽅法中调⽤setTimeout, setInterval或者发送AJAX请求等操作(防⽌ 异步操作阻塞UI)。

KinoOfficial commented 1 year ago
image

getDerivedStateFromProps 的存在只有⼀个⽬的:让组件在 props 变化时更新 state。state 的值在任何时候都取决于 props。 所以如果将来你的状态只取决于你的属性的话,就可以⽤它。

KinoOfficial commented 1 year ago

render() :⽅法是 class 组件中唯⼀必须实现的⽅法。 getSnapshotBeforeUpdate(prevProps, prevState):(版本新增)在更新之前获取快照 getSnapshotBeforeUpdate() 在最近⼀次渲染输出(提交到 DOM 节点)之前调⽤。 它使得组件能在发⽣更改之前从 DOM 中捕获⼀些信息(例如,滚动位置)。 此⽣命周期⽅法的任何返回值将作为参数传递给 componentDidUpdate()。 但是这个参数怎么接收呢,我们会看⼀下componentDidUpdate的第三个参数,就明⽩了 注意这个⽅法必须和componentDidUpdate⼀起使⽤,不然会报错 static getDerivedStateFromError(error) 版本新增 此⽣命周期会在后代组件抛出错误后被调⽤。 它将抛出的错误作为参数,并返回⼀个值以更新 state componentWillReceiveProps 在组件接收到⼀个新的 prop (更新后)时被调⽤。这个⽅法在初始化render时不会被调⽤。也就是传⼊ 的默认属性是不会调⽤的(新版本不⽀持) 如果使⽤该⽣命周期,注意控制台会有警告 在17版本改名为UNSAFE_componentWillReceiveProp(),18版本之后不再⽀持componentWillReceiveProps这种写法

KinoOfficial commented 1 year ago

shouldComponentUpdate (nextProps, nextState)返回⼀个布尔值。在组件接收到新的props或者state时被调⽤。在初始化时或者使 ⽤forceUpdate时不被调⽤。 可以在你确认不需要更新组件时使⽤。