我正在运行这样的模式,假设SearchResultsContainer已安装并且某个搜索栏设置了输入。
class SearchResults {
render() {
return(
<ResultsContext.Consumer value={input}>
{input => <SearchResultsContainer input=input}
</ResultsContext.Consumer>
)
}
class SearchResultsContainer
componentDidUpdate() {
//fetch data based on new input
if (check if data is the same) {
this.setState({
data: fetchedData
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
每当调用新的上下文值时,这将调用双重提取,因为 componentDidUpdate() 将触发并设置数据。在来自结果上下文的新输入上,它将调用componentDidUpdate()、获取、设置数据,然后调用componentDidUpdate()和获取,然后将检查数据是否相同并停止循环。
这是使用上下文的正确方法吗?