首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在API使用redux获取数据之前显示Loader?

在使用redux获取数据之前显示Loader,可以通过以下步骤实现:

  1. 定义一个loading状态:在redux的state中添加一个loading字段,用于表示数据是否正在加载。初始值可以设为false。
  2. 创建一个action:创建一个action来更新loading状态,例如"SET_LOADING"。这个action可以接受一个布尔值参数,用于表示数据是否正在加载。
  3. 创建一个reducer:在reducer中处理"SET_LOADING" action,更新loading状态。
  4. 在组件中使用redux:在需要获取数据的组件中,使用redux的connect函数连接redux的state和action。将loading状态映射到组件的props中。
  5. 在组件中显示Loader:根据loading状态,在组件中显示Loader组件或其他加载提示。可以使用条件渲染来实现,例如使用if语句或三元表达式。

下面是一个示例代码:

代码语言:txt
复制
// actions.js
export const setLoading = (isLoading) => ({
  type: "SET_LOADING",
  payload: isLoading,
});

// reducer.js
const initialState = {
  loading: false,
};

const reducer = (state = initialState, action) => {
  switch (action.type) {
    case "SET_LOADING":
      return {
        ...state,
        loading: action.payload,
      };
    default:
      return state;
  }
};

// Component.js
import React, { useEffect } from "react";
import { connect } from "react-redux";
import { setLoading } from "./actions";

const Component = ({ loading, setLoading }) => {
  useEffect(() => {
    // Simulate data fetching
    setLoading(true);

    // Make API call or fetch data

    // After data is fetched
    setLoading(false);
  }, []);

  return (
    <div>
      {loading ? <Loader /> : <DataComponent />}
    </div>
  );
};

const mapStateToProps = (state) => ({
  loading: state.loading,
});

const mapDispatchToProps = {
  setLoading,
};

export default connect(mapStateToProps, mapDispatchToProps)(Component);

在上述示例中,当组件挂载时,通过调用setLoading action将loading状态设置为true,表示数据正在加载。在数据获取完成后,将loading状态设置为false。根据loading状态,使用条件渲染来显示Loader或数据组件。

请注意,这只是一个示例实现,具体的实现方式可能因项目结构和需求而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券