这是一个设计问题,虽然我是一名全栈开发人员,但我在前端用户体验方面较弱:
我正在创建一个 laravel/Inertia/vue 应用程序,其中每个用户都有作品集。 投资组合依赖于通常在一夜之间完成的计算。 当用户进行需要重新计算以显示正确的投资组合的更改时,我想显示一个按钮,允许他们触发一项作业,该作业在用户需要时重新计算。 当重新计算作业正在运行时,我想在投资组合旁边显示一个已加载的图标,指示正在处理重新计算,完成后会显示一个复选图标,重新计算可能会持续 1-2 分钟。
由于我们有不同的组件一起工作,我不确定哪一个是解决这个问题的最佳方法: 清楚的是按钮,它对后端控制器进行 axios 调用,触发作业重新计算,并在相应的表上标记投资组合正在处理以及何时完成。
但是前端呢?我如何通知不同的前端组件?我应该存储 pinia 状态吗?一旦作业处理完毕,我将如何更新它? 我知道我可以在不同的组件上创建观察程序或反应参数,但通常最好的设计是什么,或者让前端组件监视某些后端活动的简单方法是什么?每 x 秒重复 axios 调用一次?
我不确定使用 Pinia 是否适合 Inertia,它是一个服务器端渲染的前端,尽管有一些包允许在通过 localStorage 从服务器到客户端重新加载后保持状态持久化(https://github .com/prazdevs/pinia-plugin-persistedstate),可能没有必要。
由于服务器端调用是通过页面更改进行的,因此可以使用文档中建议的中间件(https://inertiajs.com/shared-data)。
理想情况下,您希望使用套接字来执行此操作,但这完全取决于您的需求、成本和