【发布时间】:2023-02-01 00:47:26
【问题描述】:
我正在尝试在 SPA 中使用 Yew 以及一些外部 Javascript。 我正在寻找启用外部 Javascript 代码更改的正确方法 我的 Yew 应用程序中的当前路由,而不会导致网络重新加载。
我已经尝试从控制台设置 window.location.href 但是
重新加载 Yew 应用程序(如预期的那样),这不是我在此 SPA 中想要的。
我相信我需要一点 Javascript 来传递消息
到我的 Yew 应用程序并让我的 Yew 应用程序使用 Navigation API 适当地调用 navigator.push()。
在这是我的第一个 Yew 应用程序之前,我已经使用过一些 Elm。 我四处搜索并查看了各种应用程序的源代码以找到 Yew 中一种惯用的方式来做一些事情,比如 Elm 用 ports 启用的东西。 在 Elm 中,我会声明一个端口,让我的 Javascript 向它发送一条消息并使用 订阅以触发对 Elm 的 Browser.Navigation 模块的更新。
环顾四周时,我确实遇到了article 和chat application通过Yew agent和网络工作者将网络套接字的输入中继到Yew。它非常聪明,但对于我正在尝试做的事情来说似乎有点多。
所以我的问题是:
-
从外部 Javascript 更改 Yew 路由器路由的惯用方法是什么?
-
更一般地说,在 Yew 生态系统中是否有任何东西允许 Yew SPA 以 Elm 端口的方式与外部 Javascript 通信?或者有没有 更简单的方法?从我读过的内容来看,我认为我可以创建一个 在 Yew 中回调并将其注册到外部 JS 可以使用 wasm-bindgen 调用的地方。
【问题讨论】:
-
几个月前,@athan-clark 似乎有一个 similar question。
-
看起来 this gist 和来自 craftyc0der 的 blog post 可能提供一种设置 JS -> Yew 回调的方法。
标签: rust routes webassembly wasm-bindgen yew