我应该在react组件或redux操作中获取数据吗?

mwyxok5s  于 2022-11-12  发布在  React
关注(0)|答案(4)|浏览(148)

哪种方法更适合从API获取数据:
1.获取React组件中的数据并将数据传递到redux操作
1.提取redux操作内的数据

nwlls2ji

nwlls2ji1#

一般的经验法则是:

  • 如果您的数据只在单个组件内部使用,则应将其保留在那里。
  • 如果您的数据将在其他组件中使用,请将其保持在父状态或全局状态(在本例中为redux)。

然而,根据组件的加载顺序,在加载组件之前调用api可能会对您有所帮助,在这种情况下,从redux操作中获取数据将非常有用。
例如,如果你必须点击来加载一个组件,然后它将触发api调用,你可能会受益于在用户点击之前在后台加载它,以便在可能的停机时间更好地利用他们的带宽。

7fhtutme

7fhtutme2#

如果你是死定要使用Redux,那么你显然会想通过使用一个动作来处理它。
通常,如果数据仅在组件中使用,则可以在componentDidUpdate()中或在事件上执行API调用。
如果数据将由一组不相关的组件使用,或者您最终要执行大量prop线程,那么您将需要使用Redux。
actions/index.js

export const FETCH_DATA = 'FETCH_DATA'

  export const fetchData = async () => {

    const url = `http://your-url.com`;
    const request = await fetch(url);

    return {
      type: FETCH_DATA,
      payload: request
    }
  }

然后消费者的数据,你从你的行动在一个减速器。
reducers/reducer_whatever.js

import { FETCH_DATA } from '../actions/index'

  export default function(state = [], action) {
    switch (action.type) {
      case FETCH_SOMETHING:
      return [ action.payload.data, ...state ];
    }

    return state;
  }
vbkedwbf

vbkedwbf3#

1. Fetch data in react component and pass data to redux action - NO (dispatch api action in the component)

2. Fetch data inside of redux action - NO (dispatch API promise here)

触发一个动作来调用api(异步动作),并在一个reducer中处理响应。
可以在组件内部触发操作。
如果组件要使用此数据,请使用HOC函数connect将其连接到全局状态(redux

yftpprvb

yftpprvb4#

您的组件主要用于分派操作和显示返回的数据。您将用分派的操作触发组件中的API调用,并在reducer中处理响应。这通常是用redux-thunk或redux-sagas之类的东西来处理异步操作,然后您可以从redux状态访问您调用的数据。我个人是redux-sagas的粉丝,您可以在这里查看
Redux-Saga

相关问题