Reactjs React钩子:刷新goBack()上的数据

Reactjs React钩子:刷新goBack()上的数据,reactjs,react-router-dom,Reactjs,React Router Dom,我有两个屏幕,A和B: A -> B B添加数据,而A有一个包含该数据的表。当我在B中添加数据时,我正在从useHistory()react钩子调用goBack()。但是,A在我向数据库添加数据时不会刷新,因为默认情况下它不应该刷新 如果我真的在B中添加了内容,我只希望A刷新。我该怎么做?如何检测何时在A中调用goBack(),并且仅在满足某些条件时更新?可能的解决方案是,您可以将组件包装到上下文-HOC。或者你可以用其他东西代替goBack,用参数推送,用状态简单HOC,传递道具 co

我有两个屏幕,A和B:

A -> B
B添加数据,而A有一个包含该数据的表。当我在
B
中添加数据时,我正在从
useHistory()
react钩子调用
goBack()
。但是,
A
在我向数据库添加数据时不会刷新,因为默认情况下它不应该刷新


如果我真的在
B
中添加了内容,我只希望
A
刷新。我该怎么做?如何检测何时在
A
中调用
goBack()
,并且仅在满足某些条件时更新?

可能的解决方案是,您可以将组件包装到上下文-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() */ };
}
const DataContext=React.createContext(null);
//或将props.children传递给DataContext.Provider,或将props传递给A、B。。。
函数DataApp(){
const[refresh,setRefresh]=useState(false);
const-toggleRefresh=()=>{setRefresh(refresh=>!refresh)};
}
函数A(){
const{refresh,toggleRefresh}=React.useContext(DataContext);
useEffect(()=>{/*应刷新数据?*/},[]);
}
函数B(){
const{refresh,toggleRefresh}=React.useContext(DataContext);
const submitData=()=>{toggleRefresh();/*goBack()*/};
}

与其尝试检测事物,为什么不接受React的声明性质,并使用诸如Redux或其他状态管理库之类的工具?正如@apincik所建议的,您也可以自己利用上下文,但是为什么还要再发明轮子呢。。。