React + Alt:使用来自多个商店的数据向 DataSource 发出请求

Posted

技术标签:

【中文标题】React + Alt:使用来自多个商店的数据向 DataSource 发出请求【英文标题】:React + Alt: Use data from multiple stores to make a request to DataSource 【发布时间】:2016-08-13 01:24:49 【问题描述】:

我正在开发一个使用 React 和 Alt 通量实现的应用程序。 目前,我正在尝试找出使用来自多个 Alt 存储的数据来向后端发送请求的最佳方式。

比如说,我的DataSource 文件中有一个SheetDataStoreFiltersStore 和一个fetchFilteredData 方法。要从后端获取正确的数据,我需要将一些工作表数据和过滤器都传递给 fetchFilteredData,但是当您从其中一个商店调用 fetchFilteredData 方法时,您可以传递一些参数和确切商店的状态.

所以我看到了两种处理这种情况的方法:

1) 我做了两个动作:prepareFiltersfetchDataprepareFilters 从组件调用并由FilterStore 处理,它准备所有需要的数据,然后调用fetchData 操作,将准备好的数据作为参数传递。 SheetDataStore 处理 fetchData 操作并调用 fetchFilteredData,现在拥有所有必需的数据。

我不喜欢这里,在我看来,商店不应该调用操作,所以这是一种 hacky 解决方案。

2) 我将FilterStore 导入到SheetDataStore 并在SheetDataStore 方法之一中使用FilterStore.getState() 来获取我需要的所有数据。这看起来很容易,但像这样耦合商店可能会遇到一些陷阱。

对于这种情况,有什么最佳做法吗?也许你们中的一些人遇到了类似的问题,并且可以根据您的经验推荐哪些途径?

【问题讨论】:

【参考方案1】:

在组件中进行绑定。假设您有FilterComponent,然后将搜索操作SheetDataAction.search 传递给它: <FilterComponent search=SheetDataAction.search />

FilterComponent.render() 中执行<button onClick=() => this.props.search(this.props.criteria) /> 之类的操作

【讨论】:

公平点,但在这种情况下,您需要在组件中拥有所有可用的数据,而我没有。简而言之,我决定采用我在问题中提到的第二个选项,它对我有用。

以上是关于React + Alt:使用来自多个商店的数据向 DataSource 发出请求的主要内容,如果未能解决你的问题,请参考以下文章

setState() 是不是可用于更新 Alt.js 商店中的状态?

React 尝试使用 .map 将来自多个 API 的数据填充到同一个映射容器中

我们可以在 react redux 中有多个商店吗

如何使用 React Hooks 和 Context API 正确地将来自 useEffect 内部调用的多个端点的数据添加到状态对象?

从单个商店动态创建多个 Sencha ExtJS 商店

具有多个独立商店/调度员的 FLUX