简单来说就是这种多 tab 页切换的需求。
通过 hotwire 控制器确实可以实现类似前端框架的效果,但是有一些需要记住状态的场景,比如在第一页有一些编辑操作,切换到别的页面再切回来的话,hotwire 能保存状态吗?
这几个 tab 内容是独立的吗?是的话可以写个 stimulus 控制器管理 tab 打开和关闭,然后 tab 内容用 turbo frame 加载,默认下 turbo frame 里面的操作只会影响 frame。
关于多 tab 的状态管理,比较简单的方案是实时保存到数据库里边,这样处理起来简单点。如果希望在客户端管理状态,也可以使用类似 nanostores 这样的库配合 stimulusjs 来实现。因为 turbo drive 的特性,页面间跳转状态不会丢失,但是手动刷新页面会。希望页面刷新也能保存状态的话,nanostores 也支持保存到 localstorage。
参考二位的建议实现了效果,感谢 @Rei @Ian