我试图理解通量模式。
我相信在任何好的设计中,应用程序都应该由相对独立和通用(因此可重用)的组件组成,这些组件通过特定的应用程序逻辑粘合在一起。
在 Flux 中有封装数据和域逻辑的域特定的 Store。这些可能会在同一域的另一个应用程序中重用。
我认为还应该有特定于应用程序的商店来保存应用程序状态和逻辑。这是胶水。
现在,我尝试将其应用于虚构的“GPS Tracker”应用程序:
...
当用户点击 [Stop Tracking] 按钮时,相应的 ViewController 会引发STOP_CLICK
.
AppState.on(STOP_CLICK):
dispatch(STOP_GEOLOCATION)
dispatch(STOP_TRACKING)
GeolocationService.on(STOP_GEOLOCATION):
stopGPS(); this.on = false; emit('change')
TrackStore.on(STOP_TRACKING):
saveTrack(); calcStatistics(); this.tracking = false; emit('change')
dispatch(START_UPLOAD)
所以,我有一个事件滚雪球。
据说在 Flux 中,一个 Action 不应该引发另一个 Action。但我不明白如何做到这一点。
我认为用户操作不能直接进入域商店,因为这些应该与 UI 无关。相反,AppState(或应用程序逻辑所在的任何地方)应该将用户操作转换为域操作。
- 如何重新设计这种 Flux 方式?
- 应用程序逻辑应该去哪里?
- 尝试使域存储独立于应用程序逻辑是否正确?
- “服务”的地方在哪里?
谢谢你。