在动作中访问状态是否违反了 Flux 原则?
Is accessing state in an action a violation of Flux principles?
我是 React 新手,正在编写无限滚动功能。
window.addEventListener( 'scroll', DutyActions.scrollDuties );
在每个滚动事件中,我调用操作 scrollDuties
,它从服务器获取数据。然后调用名为 loadDuties
的服务器操作将响应传递给商店,然后将其广播给视图。
问题在于,在快速滚动时它会多次点击 API,因为第二个滚动事件在 setState({loading: true})
语句呈现在页面上之前触发。我认为唯一的解决方案是读取操作中的状态并仅在 loading
标志为 false 时才使 ajax 命中。
这会违反 Flux 原则吗?
The Redux flavor of Flux handles this situation in the action elegantly by way of the redux-thunk middleware. 在该范例中,动作创建者可以 return 具有获取商店参数的函数。它的调度程序知道如何评估此函数,以便商店可以暴露给操作,而无需在操作中创建明确的商店依赖项。
使用更多标准的 Flux 实现,要实现相同的解耦,我相信您必须将存储参数传递给组件的操作。也许是这样的:
doScrollAction: function (scrollParam) {
var isLoadingStore = IsLoadingStore.getAll()
DutyActions.scrollDuties(scrollParam, IsLoadingStore)
}
window.addEventListener( 'scroll', doScrollAction );
我是 React 新手,正在编写无限滚动功能。
window.addEventListener( 'scroll', DutyActions.scrollDuties );
在每个滚动事件中,我调用操作 scrollDuties
,它从服务器获取数据。然后调用名为 loadDuties
的服务器操作将响应传递给商店,然后将其广播给视图。
问题在于,在快速滚动时它会多次点击 API,因为第二个滚动事件在 setState({loading: true})
语句呈现在页面上之前触发。我认为唯一的解决方案是读取操作中的状态并仅在 loading
标志为 false 时才使 ajax 命中。
这会违反 Flux 原则吗?
The Redux flavor of Flux handles this situation in the action elegantly by way of the redux-thunk middleware. 在该范例中,动作创建者可以 return 具有获取商店参数的函数。它的调度程序知道如何评估此函数,以便商店可以暴露给操作,而无需在操作中创建明确的商店依赖项。
使用更多标准的 Flux 实现,要实现相同的解耦,我相信您必须将存储参数传递给组件的操作。也许是这样的:
doScrollAction: function (scrollParam) {
var isLoadingStore = IsLoadingStore.getAll()
DutyActions.scrollDuties(scrollParam, IsLoadingStore)
}
window.addEventListener( 'scroll', doScrollAction );