我构建了一个 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'}
我确实尝试重新编码,但这并没有解决问题。还试图捕捉 HomeFC
和 GatherDataFC
中的错误也无济于事。如果有人能解决这个问题,那就太好了......
回答1
您的 useIonViewWillEnter
当前处于过时状态,因为它已被缓存,就像许多其他钩子一样。要解决此问题,您需要明确告诉它其依赖位置已更改。
useIonViewWillEnter(() => {
console.log(location);
}, [location]/*depdendency array*/);