Gle*_*ift 6 javascript clojure clojurescript reagent re-frame
我正在重新构建默认模板之上构建应用程序.
我有以下秘书路线:
(defroute "/users/:id" []
(re-frame/dispatch [:set-active-panel :user-panel])
Run Code Online (Sandbox Code Playgroud)
我想id从我的试剂组件中的URL 访问参数.我发现实现它的唯一方法就是设置它db.就像是:
(defroute "/users/:id" [id]
(re-frame/dispatch [:set-user-id id])
(re-frame/dispatch [:set-active-panel :user-panel])
Run Code Online (Sandbox Code Playgroud)
这肯定会污染我的数据库,这种方法对我来说似乎很奇怪,因为我曾经在反应中写这样的东西(使用react-router):
<Route path="/user/:id" component={MyComponent}>
// object with params automatically attached as props to MyComponent
Run Code Online (Sandbox Code Playgroud)
那么将秘书URL参数广播到试剂组件的正确方法是什么?
UPD:在评论中有一个链接到github讨论这个问题.Ones指的是将URL params设置为db作为正确的方法.无论如何,我真的不喜欢它.它会导致更多的复杂性(设置params,订阅它们,取消设置).而且我不喜欢将URL params视为app状态.有什么黑客或其他什么?
https://github.com/gadfly361/reagent-seed/issues/4上的讨论似乎完全涵盖了您的场景,我认为这种方法遵循重新构建数据库内容决定整个状态的“单一数据库”哲学您的应用程序(包括面板及其参数)。
我认为这是一个是否相信单原子数据库是正确方法的问题。直接使用路径参数(就像Route直接从 URL 读取它们的组件一样)就像编写一个不使用原子 DB 而是使用一些替代数据源(在本例中为 URL 路径)的组件。
有人可能会说该Route组件完全执行您所说的复杂逻辑(它订阅路径更改并管理另一个组件状态)。在这种情况下,您只是重用组件中的现有代码Route,而不是在代码中执行相同的操作,根据秘书路由更新 URL 路径更改上的数据库数据。
| 归档时间: |
|
| 查看次数: |
765 次 |
| 最近记录: |