如何使用带有功能性道具的React和Ionic推送页面?
我确实尝试过:
history.push({
pathname: '/edit_some_property',
state: {
onSetSomeProperty(val) { setSomeState(val) }
}
})
但是抛出:
DOMException:无法在“历史记录”上执行“ pushState”:onSetSomeProperty(val){setSomeState(val); }无法克隆。
显然,state
被序列化为字符串,因此传递函数将无法正常工作。
还是有另一种方法可以更好地将带有回调的屏幕推送到上一个屏幕?
背景和详细信息:
我有一个非常分层的样式React + Ionic应用程序。
现在看来,为了在屏幕之间导航,Ionic需要您使用React Router,其中每个页面都有唯一的URL。但这在这里不能很好地工作,因为每个屏幕都取决于先前屏幕的状态。
这意味着没有明显的方法可以在页面之间交流丰富的道具。如果我有上一页的回调,则无法传递,因为我无法直接访问通过路由器推送的组件。
还有ion-nav
https://ionicframework.com/docs/api/nav,它更接近我的需求,但似乎根本没有任何反应接口。
我尝试过:
<IonNav root={Home} />
在深陷于混乱的内部中抛出了这个:
错误:缺少框架委托
答案 0 :(得分:0)
我原来的回答很抱歉。我做了一些测试,发现传递给状态的任何东西都需要可序列化。为了实现此功能,其他人报告说https://www.npmjs.com/package/safe-json-stringify帮助了他们。