在我的应用程序中,我有一个搜索信息的上下文。我可以进行新的搜索、清除搜索等——一切正常。
问题是,当我单击浏览器的后退按钮时,我的上下文不会使用旧数据更新。
以前我使用history.push
并推送了一个状态对象,我在所有组件中都使用了它。在将所有这些切换为使用上下文之后,我遇到了麻烦。
代码设置有点像这样:
- 一个总体组件 SiteLayoutProvider
我的状态的定义:
const [searchData, setSearchData] = useState(null)
以及包含以下内容的返回语句:
<SearchContext.Provider value={[searchData, setSearchData]}
...
</SearchContext.Provider>
现在我可以使用它并将这个上下文拉到我需要它的任何地方useContext
。我可以执行搜索setSearchData
,并且子组件中的任何 console.logs 都是准确的——我可以清除搜索并执行新的搜索,并且信息仍然被准确记录。但是当我单击后退按钮时,上下文中的内容以及记录的内容并不代表以前的数据。
我是否完全误解了“香草”上下文的功能?我需要使用history.push
吗?这样做的“正确”方法是什么?