reactjs - useLocation Hook 返回错误的路径

我构建了一个 Ionic-React 应用程序,它可以扫描二维码并基于它连接到设备。我使用 useLocation()useHistory() 钩子通过我的应用程序进行路由。

我传递了一些这样的数据:

const Home: React.FC = () => {

  let history = useHistory()

  const startScan = async () => {
//Some Barcode Logic
 history.replace("/gatherData", {scan: result.content})
    }};

并使用以下方式接收它:

const GatherData: React.FC = () => {

    let history = useHistory();
    let location = useLocation();

    useIonViewWillEnter(() => {
        console.log(location);
    });

我像往常一样这样做了,它似乎工作得很好。但是现在,不知何故,useLocation() 钩子不再识别历史变化了。虽然我被路由到下一页, useLocation() 返回一个旧路径:

{pathname: '/home', ... state: undefined, key: 'bdwus9'}

我确实尝试重新编码,但这并没有解决问题。还试图捕捉 HomeFCGatherDataFC 中的错误也无济于事。如果有人能解决这个问题,那就太好了......

回答1

您的 useIonViewWillEnter 当前处于过时状态,因为它已被缓存,就像许多其他钩子一样。要解决此问题,您需要明确告诉它其依赖位置已更改。

useIonViewWillEnter(() => {
    console.log(location);
}, [location]/*depdendency array*/);

相似文章

最新文章