在reactjs中,如何从其他文件中的fetch()获取响应

时间:2019-08-17 03:59:31

标签: javascript database reactjs fetch-api

我想从服务器中的数据库中检索数据。

文件A 中,我打电话给fetch(url),然后希望在文件B 中得到答复,这可能吗?

然后,当我使用 electronJS 时,可以通过使用ipcRenderer.on('channel', function);轻松实现。

因此在文件A 中,我使用ipcRenderer.send('channel', someData);提取数据,然后通过声明ipcRenderer.on('channel', function(result));文件B 中接收了数据。

现在我不使用electronJS,因为我计划构建一个Web应用程序,据我了解,我可以使用fetch(url)从数据库中获取数据,但是问题是我不知道如何接收数据在其他文件中。

让我知道是否需要更多说明。

添加示例代码:

我从这里获得此示例代码:https://stackoverflow.com/a/48381103/9177853 类似的问题,但不完全相同。

文件A 中:

export const getData = () => fetch("https://api.myjson.com/bins/mp441")
  .then(response => response.json())

文件B 中:

import { getData } from './path/to/getData.js';

const someFunc = () => {
   getData().then(data => {
       // set redux state
       this.props.setReduxState(data);
   })
}

但是文件B 不会自动监听传入的data响应,因此将数据存储为redux状态,而无需显式调用someFunc();

我想要的只是通过单击按钮上的fetch(url)单击文件A 文件B 随时准备监听传入的响应,然后存储响应数据到redux存储。

1 个答案:

答案 0 :(得分:0)

您想要的是可能的,这听起来像组件间的通信,请添加示例代码,希望您会有所帮助。您将组件A(文件A)写入到组件B(文件B)所依赖的state中。

从示例代码进行更新。

  1. 如果您打算使用Redux:请查看redux action and reducer。它需要进行一些初始设置。

  2. 如果您的应用很小,我建议您看一下react hooks useReducer and useState.

  3. 如果您的应用相对较小,并且您不想传递专家意见,您也可以使用the context API进行反应。

  4. 最后,您可能根本不需要状态管理工具。我建议您创建一个根组件并将所有数据存储在其状态下,并让其子组件更新并使用该状态。通过阅读可以轻松实现。您可以check one my repo that does it here