reactjs - React Hooks:在 goBack() 上刷新数据
问题描述
我有两个屏幕,A 和 B:
A -> B
B 添加数据,而 A 有一个包含该数据的表。当我在 中添加数据时B
,我goBack()
从useHistory()
反应钩子中调用。但是,A
当我将数据添加到数据库时不会刷新,因为默认情况下它不应该。
如果我A
真的在B
. 我该怎么做呢?我如何检测何时goBack()
被调用A
,并且仅在满足某些条件时才更新?
解决方案
可能的解决方案,您可以将组件包装到上下文 - HOC。或者您可以使用其他东西而不是 goBack,使用参数推送,使用状态的简单 HOC,传递道具......
const DataContext = React.createContext(null);
// or pass props.children to DataContext.Provider, or props to A,B...
function DataApp() {
const [refresh, setRefresh] = useState(false);
const toggleRefresh = () => { setRefresh(refresh => !refresh) };
<DataContext.Provider value={{refresh, toggleRefresh}}>
<A />
<B />
</DataContext.Provider>
}
function A() {
const { refresh, toggleRefresh } = React.useContext(DataContext);
useEffect(() => { /* Should be data refreshed? */ }, []);
}
function B() {
const { refresh, toggleRefresh } = React.useContext(DataContext);
const submitData = () => { toggleRefresh(); /* goBack() */ };
}
推荐阅读
- solace - 使用 Grafana 监控 Solace 队列
- r - dplyr group_by 在两列的元素上
- asp.net - iis 托管网站不同于本地网站
- python - 将过滤器字典匹配到另一个 - Python
- angular - 错误类型错误:“_co.bankId 未定义”(Angular 7)
- java - 带有 Kafka 源和 Dataflow 运行器的 Beam java SDK 2.10.0:窗口化的 Count.perElement 永远不会触发数据
- python - 如何通过聚合循环运行数据框列表?
- java - 使用模拟服务进行 H2 数据库测试会产生空指针异常
- sql - 使用多个布尔运算符的 SQL 搜索
- javascript - 如何解析在javascript中嵌套了转义JSON的JSON?