【发布时间】:2023-05-02 11:11:01
【问题描述】:
我想知道如何使用 ReactRouter 在 Ionic 5 的两个页面之间传递非字符串数据。
我能找到的所有解决方案都使用了 Ionic 和 Angular,或者只是将一个字符串作为 URL 参数传递。
到目前为止,这些是我的组件:
App.tsx
const App: React.FC = () => {
return (
<IonApp>
<IonReactRouter>
<IonSplitPane contentId="main">
<Menu />
<IonRouterOutlet id="main">
<Route path="/page/Home" component={Home} exact />
<Route path="/page/DataEntry" component={DataEntry} exact />
<Route path="/page/Request" component={Request} exact />
<Route path="/page/ResultMap" component={ResultMap} exact />
<Redirect from="/" to="/page/Home" exact />
</IonRouterOutlet>
</IonSplitPane>
</IonReactRouter>
</IonApp>
);
};
这里的第1页收集用户输入数据(字符串、对象、数组),我想在按钮点击时调用路由'/page/ResultMap'并传递数据,以便下一页可以处理:
<IonGrid>
<IonRow>
<IonCol class="ion-text-center">
<IonButton text-center="ion-text-center" color="primary" size="default" routerLink='/page/ResultMap'>Erkunden!</IonButton>
</IonCol>
</IonRow>
</IonGrid>
第 2 页,应该接收数据:
const ResultMap: React.FC = () => {
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonButtons slot="start">
<IonMenuButton />
</IonButtons>
<IonTitle>Map</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent fullscreen>
</IonContent>
</IonPage>
);
};
我了解 React 关于 props 和 state 的原理,只是不知道在这种情况下如何将它与 Ionic 结合起来。
感谢您的帮助!
编辑:
按照建议,我像这样更改了 onClick 按钮:
<IonButton text-center="ion-text-center" color="primary" size="default" onClick={e => {
e.preventDefault();
history.push({
pathname: '/page/ResultMap',
state: { time: transportTime }
})}}>
并尝试像这样在 ResultMap 页面上接收数据:
let time = history.location.state.time;
但我得到了错误:
Object is of type 'unknown'. TS2571
7 | let history = useHistory();
8 |
> 9 | let time = history.location.state.time;
| ^
如何在新页面访问传递的对象?
【问题讨论】:
-
这也是一个离子特定的例子:*.com/questions/60689482/…
-
感谢您的建议。我尝试了第二个链接的解决方案,但我遇到了上下文问题。 TalOrlanczyk 的解决方案对我有用。
标签: ionic-framework react-router ionic5