【发布时间】:2017-04-20 05:37:21
【问题描述】:
我的问题更多的是关于我的应用程序路由的高级设计决策,以及被渲染的后续组件。
我的应用有多个“页面”/“部分”。导航到这些部分可以通过基本路由简单地处理。其中一个部分是“lookbook”,并且有一个类似于 Instagram 的照片源(路线是“/lookbook”)。如果我要单击此照片供稿中的照片,我希望显示带有扩展照片的模式,并带有一些额外的数据。
我的问题归结为 Feed 中其中一张照片的 onClick 事件应该发生什么。 (这个非常具体的功能是我的问题的来源,因为我相信它将决定我应该如何设计组件的行为方式。)
在 onClick 事件中,是否更有意义:
A) 只需导航到一条路线,例如“/lookbook/photoId”。然后让父 Lookbook 组件感知 URL 更改,然后提供我想要的内容。
或
B) 更改 Lookbook 组件的状态,以在模式内扩展点击的照片(无 URL 更改)。
【问题讨论】:
-
我几乎肯定会为模态选择 B,尽管这可能只是个人喜好.. 我不能说它在客观上是正确的
-
我会说A有它的优势。您正在将 URL 状态用于其他事情,因此继续使用该状态会更干净,并且它还提供了一种直接进入该状态的方法。如果它是组件状态,那么您无法直接导航到以模式打开的照片,这可能是一个不错的用例
-
好点。我确实想实现可共享的 URL,所以 A 似乎朝那个方向发展。现在,如果我要走 A 路,路由应该是什么样的?我的嵌套路由(即“lookbook/photoId”)会渲染父 Lookbook 组件,然后它会感知到 url 有一个嵌套的 id,还是我的嵌套路由会渲染 Lookbook.js 的更深的子组件,例如 PhotoModal.js例子?
标签: javascript reactjs react-router url-routing state