通常,有了道具,我们可以写
componentDidUpdate(oldProps) {
if (oldProps.foo !== this.props.foo) {
console.log('foo prop changed')
}
}
为了检测道具变化。
但是如果我们使用React.createRef()
,我们如何检测 ref 何时更改为新的组件或 DOM 元素?React 文档并没有真正提及任何内容。
铁,
class Foo extends React.Component {
someRef = React.createRef()
componentDidUpdate(oldProps) {
const refChanged = /* What do we put here? */
if (refChanged) {
console.log('new ref value:', this.someRef.current)
}
}
render() {
// ...
}
}
我们是否应该自己实现某种旧值的东西?
铁,
class Foo extends React.Component {
someRef = React.createRef()
oldRef = {}
componentDidMount() {
this.oldRef.current = this.someRef.current
}
componentDidUpdate(oldProps) {
const refChanged = this.oldRef.current !== this.someRef.current
if (refChanged) {
console.log('new ref value:', this.someRef.current)
this.oldRef.current = this.someRef.current
}
}
render() {
// ...
}
}
这是我们应该做的吗?我原以为 React 会为此添加一些简单的功能。