Context提供了一种在组件树中传递数据的方式,而不必在每个级别手动传递props。这很好!
但我想知道如何与getDerivedFromProps()一起使用。
例如,如果我在应用程序的顶层通过Context发送一个prop,该prop是window.location.href
,并且我需要根据href在子组件中执行操作,例如获取数据。
使用getDerivedStateFromProps(),我必须编写以下内容:
getDerivedStateFromProps(nextProps, state) {
var stateRev = null
var pathname = hrefToPath(nextProps.href)
if (pathname != state.pathname) {
stateRev = {}
Object.assign(stateRev, {
pathname,
book: source.find()
})
}
return stateRev
}
然而,如果我像上面那样编写代码,我必须通过层级发送window.location.href。我需要知道的是,如果上下文中的属性已更改,则需要更新状态。
我看不到任何了解上下文API和getDerivedStateFromProps的方式来知道上下文中的属性是否已更改。是否有什么需要知道的吗?
谢谢。