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

如何在React + Redux应用程序中显示异步请求的加载微调器?

在React + Redux应用程序中显示异步请求的加载微调器可以通过以下步骤实现:

  1. 首先,在React组件中引入所需的库和组件。例如,可以使用react-redux库中的connect函数来连接Redux store和React组件,以及使用react-loading-spinner组件来显示加载微调器。
  2. 在Redux store中定义一个用于管理异步请求状态的reducer。该reducer可以包含一个loading状态字段,用于表示异步请求是否正在进行中。
  3. 创建一个action creator函数,用于发起异步请求。在该函数中,可以先分发一个用于设置loading状态为true的action,然后执行异步请求,并在请求完成后再分发一个用于设置loading状态为false的action。
  4. 在React组件中,使用connect函数将Redux store中的loading状态映射到组件的props中。
  5. 在组件的render方法中,根据loading状态的值来决定是否显示加载微调器。可以使用条件渲染来实现这一点,例如使用三元表达式或if语句。

以下是一个示例代码:

代码语言:txt
复制
// 引入所需的库和组件
import React from 'react';
import { connect } from 'react-redux';
import LoadingSpinner from 'react-loading-spinner';

// 定义reducer
const initialState = {
  loading: false
};

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

// 创建action creator
const setLoading = (isLoading) => ({
  type: 'SET_LOADING',
  payload: isLoading
});

// React组件
class MyComponent extends React.Component {
  componentDidMount() {
    // 发起异步请求
    this.props.setLoading(true);

    // 执行异步请求
    // ...

    // 请求完成后设置loading状态为false
    this.props.setLoading(false);
  }

  render() {
    return (
      <div>
        {this.props.loading ? <LoadingSpinner /> : null}
        {/* 其他组件内容 */}
      </div>
    );
  }
}

// 将loading状态映射到组件的props中
const mapStateToProps = (state) => ({
  loading: state.loading
});

// 连接Redux store和React组件
export default connect(mapStateToProps, { setLoading })(MyComponent);

这样,当异步请求发起时,loading状态会被设置为true,加载微调器会显示出来;当请求完成后,loading状态会被设置为false,加载微调器会隐藏起来。

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

相关·内容

2023 React 生态系统,以及我一些吐槽……

这通常意味着将基于组件状态和副作用凑合在一起,或者使用更通用状态管理库在应用程序存储和提供异步数据。 虽然大多数传统状态管理库非常适合处理客户端状态,但在处理异步或服务状态时效果不佳。...(可能是编程中最难事情之一) 将多个请求相同数据重复请求合并为单个请求 在后台更新“过时”数据 了解数据何时“过时” 尽快反映数据更新 性能优化,分页和惰性加载数据 管理服务状态内存和垃圾回收...通常,Web 应用程序需要从服务获取数据才能显示。它们通常还需要对该数据进行更新、将更新发送到服务,并使客户端上缓存数据与服务数据保持同步。...这在实现当今应用程序中使用其他行为时变得更加复杂: 跟踪加载状态以显示 UI 加载指示 避免对相同数据进行重复请求 进行乐观更新以提高 UI 响应速度 随着用户与 UI 进行交互,管理缓存生命周期...Redux 文档教授了一些常见模式,用于在请求生命周期中分派操作以跟踪加载状态和请求结果,并且 Redux Toolkit createAsyncThunk API 是设计为抽象化该典型模式

53030

为什么我不再用Redux

ReduxReact 生态系统革命性技术。它使我们能够在全局范围内存储不可变数据,并解决了在组件树 prop-drilling 问题。...我们前端应用程序真的那么复杂吗,还是说我们试图用 Redux事情太多了? 单页应用程序问题 React 这样单页应用程序(SPA)出现为我们开发 Web 应用程序方式带来了许多变化。...如果我们不再在前端代码管理后端状态,而只是将其视为需要定期更新缓存会怎么样呢?将前端视为从缓存读取内容简单显示层后,我们代码就会变得更加易用,并且更适合纯前端开发人员阅读。...我使用常规 JS、React Hooks 和 axios 实现了一个从服务获取简单 TODO 列表。...本文提到这些库代表了我们在单页应用程序管理状态方式变革,并且是朝着正确方向迈出一大步。我期待着看到它们能对 React 社区产生怎样影响。

2.5K20

探索 React 状态管理:从简单到复杂解决方案

引言React状态管理在构建动态和交互式Web应用程序扮演着至关重要角色,如果你想在React工作,了解它是非常重要,实际上是最重要事情。...每当状态发生变化时,React都会处理组件重新渲染并相应地更新显示计数。这个基本例子演示了在React应用程序中使用useState()钩子管理状态简单性和强大性。...通过一个逐步例子,我们演示了如何将Redux集成到React应用程序以有效地处理状态更改。...在handleSubmit函数内部,我们调用mutation.mutateAsync以向服务发送新数据对象。我们呈现数据和一个提交按钮。在加载时,我们显示加载消息;如果有错误,我们显示错误消息。...通过这个设置,React Query处理了服务状态、缓存和数据获取管理,使得更容易在React组件中跟踪、更新和显示服务数据。

28930

「前端架构」Grab前端学习指南

新页面所需新数据(通常为JSON格式)由浏览通过对服务AJAX请求检索。然后,SPA通过JavaScript动态地更新页面,它在初始页面加载时已经下载了这些数据。...服务需要HTTP请求更少,因为对于每个页面加载,不必再次下载相同资产。...随着应用程序越来越大,您可能会发现应用程序结构变得有点混乱。整个应用程序组件可能不得不共享和显示公共数据,但没有优雅方式来处理React。...毕竟,React只是一个视图层,它并没有规定如何在传统MVC模式构建应用程序其他层,比如模型和控制。...开发经验——在开发过程,我们花了很多精力来创建工具来帮助调试和检查应用程序,比如Redux DevTools。 您应用程序可能必须处理异步调用,发出远程API请求

7.4K20

你要 React 面试知识点,都在这了

Props 和 State 什么是 PropTypes 如何更新状态和不更新状态 组件生命周期方法 超越继承组合 如何在React应用样式 什么是Redux及其工作原理 什么是React路由及其工作原理...在显示列表或表格时始终使用 Keys,这会让 React 更新速度更快 代码分离是将代码插入到单独文件,只加载模块或部分所需文件技术。...如何在重新加载页面时保留数据 单页应用程序首先在DOM中加载index.html,然后在用户浏览页面时加载内容,或者从同一index.html后端API获取任何数据。...如果通过点击浏览重新加载按钮重新加载页面index.html,整个React应用程序将重新加载,我们将丢失应用程序状态。 如何保留应用状态?...每当重新加载应用程序时,我们使用浏览localstorage来保存应用程序状态。

18.4K20

高级前端react面试题总结

可以将浏览渲染、布局、绘制、资源加载(例如 HTML 解析)、事件响应、脚本执行视作操作系统“进程”,需要通过某些调度策略合理地分配 CPU 资源,从而提高浏览用户响应速率, 同时兼顾任务执行效率...Redux 请求中间件如何处理并发使用redux-Saga redux-saga是一个管理redux应用异步操作中间件,用于代替 redux-thunk 。...但是在⼀定规模项⽬,上述⽅法很难进⾏异步管理,通常情况下我们会借助redux异步中间件进⾏异步处理。...redux-observable额外范式,上⼿简单redux-thunk缺陷:样板代码过多: 与redux本身⼀样,通常⼀个请求需要⼤量代码,⽽且很多都是重复性质耦合严重: 异步操作与redux...最终更新只产生一次组件及其子组件重新渲染,这对于大型应用程序性能提升至关重要。

4K40

ReactRedux

react-redux.png 其中红色虚线部分为redux内部集成,不能显示看到。 action:是事件,它本质上是JavaScript普通对象,它描述是“发生了什么”。...永远不要在 reducer 里做以下操作: 修改传入参数; 执行有副作用操作, API 请求和路由跳转; 调用非纯函数, Date.now() 或 Math.random()。...react-redux.png 我们仍然会遵守上图,这是我们核心,不能改变,下面我们来看一个实际例子,工资列表页面。 工资列表页面 也就是一个普通通过网络请求,去请求列表数据列表展示。...状态(state) 是一种数据结构,存储在store数据 异步加载页面的状态:“加载加载成功,展示列表;加载失败” 这三种状态。...事件 列表展示过程数据,也就是:“开始加载加载成功;加载失败”这三个事件。其实整个过程和之前使用promise来实现异步操作是一样

4K20

常见react面试题

React组件,就需要使用其他框架配合管理异步任务流程,redux-thunk,redux-saga等; Mobx是一个透明函数响应式编程状态管理库,它使得状态管理简单可伸缩∶ Action∶定义改变状态动作函数...将组件或页面通过服务生成html字符串,再发送到浏览,最后将静态标记"混合"为客户端上完全交互应用程序。...页面没使用服务渲染,当请求页面时,返回body里为空,之后执行js将html结构注入到body里,结合css显示出来; SSR优势: 对SEO友好 所有的模版、图片等资源都存在服务端 一个html...而客户端渲染是等js代码下载、加载、解析完成后再请求数据渲染,等待过程页面是什么都没有的,就是用户看到白屏。...view -> action -> middleware -> reducer -> store ,在这一环节可以做一些"副作用"操作,异步请求、打印日志等。

3K40

社招前端一面react面试题汇总

什么情况下使用异步组件提高页面加载速度,使用reloadable把各个页面分别单独打包,按需加载Reactkeys作用是什么?...最终更新只产生一次组件及其子组件重新渲染,这对于大型应用程序性能提升至关重要。...因此在这些阶段发岀Ajax请求显然不是最好选择。在组件尚未挂载之前,Ajax请求将无法执行完毕,如果此时发出请求,将意味着在组件挂载之前更新状态(执行 setState),这通常是不起作用。...setTimeout是同步redux异步中间件之间优劣?...redux-thunk缺陷:样板代码过多:与redux本身⼀样,通常⼀个请求需要⼤量代码,⽽且很多都是重复性质;耦合严重:异步操作与reduxaction偶合在⼀起,不⽅便管理;功能孱弱:有⼀些实际开发中常

3K20

一天梳理完react面试高频题

这种机制可以让我们改变数据流,实现异步action ,action 过滤,日志输出,异常报告等功能redux-logger:提供日志输出redux-thunk:处理异步操作redux-promise:...无论你在何处渲染一个 ,都会在应用程序 HTML 渲染锚()。...单向数据流模式,所以props是从父组件传入子组件数据Redux 异步请求怎么处理可以在 componentDidmount 中直接进⾏请求⽆须借助redux。...但是在⼀定规模项⽬,上述⽅法很难进⾏异步管理,通常情况下我们会借助redux异步中间件进⾏异步处理。...reactkey作用简单说:key 是虚拟DOM一种标识,在更新显示是key起到了极其重要作用复杂说:当状态数据发生改变时候,react会根据【新数据】生成【新虚拟DOM】,随后react

4.1K20

redux-saga

这些 state 可能包括服务响应、缓存数据、本地生成尚未持久化到服务数据,也包括 UI 状态,激活路由,被选中标签,是否显示加载动效或者分页等等。...当系统变得错综复杂时候,想重现问题或者添加新功能就会变得举步维艰。 如果这还不够糟糕,考虑一些来自前端开发领域新需求,更新调优、服务端渲染、路由跳转前请求数据等等。...这里复杂性很大程度上来自于:我们总是将两个难以理清概念混淆在一起:变化和异步。 我称它们为曼妥思和可乐。如果把二者分开,能做很好,但混到一起,就变得一团糟。...一些库 React 试图在视图层禁止异步和直接操作 DOM 来解决这个问题。美中不足是,React 依旧把处理 state 数据问题留给了你。Redux 就是为了帮你解决这个问题。...因此我们首先得学习Redux,中文官网地址:http://cn.redux.js.org/ 此时我们可以很好在大型项目中管理我们state了,但如果我们要异步获取数据、访问浏览缓存等操作,就需要用到

51810

美团前端react面试题汇总

将组件或页面通过服务生成html字符串,再发送到浏览,最后将静态标记"混合"为客户端上完全交互应用程序。...页面没使用服务渲染,当请求页面时,返回body里为空,之后执行js将html结构注入到body里,结合css显示出来;SSR优势:对SEO友好所有的模版、图片等资源都存在服务端一个html返回所有数据减少...非ssr html渲染ssr html渲染Redux 异步请求怎么处理可以在 componentDidmount 中直接进⾏请求⽆须借助redux。...但是在⼀定规模项⽬,上述⽅法很难进⾏异步管理,通常情况下我们会借助redux异步中间件进⾏异步处理。...但在 React 中会有些不同,包含表单元素组件将会在 state 追踪输入值,并且每次调用回调函数时, onChange 会更新 state,重新渲染组件。

5.1K30

(译) 如何使用 React hooks 获取 api 接口数据

在 Effect Hook 中使用 Loading(Loading Indicator with React Hooks) 这里让我们来给程序添加一个 loading(加载),这里需要另一个 state...Hooks) 如何在 Effect Hook 做一些错误处理呢?...Data Fetching Hook) 其实就是请求封装 为了能够提取自定义请求 hook,除了属于输入框 query 字段,别的包括 loading 加载、错误处理函数都要包括在内。...在 Effect Hook 中止数据请求(Abort Data Fetching in Effect Hook) React一个常见问题是,即使组件已经卸载(例如由于使用React Router...我之前已经在这里写过关于这个问题文章,它描述了如何防止在各种场景为未加载组件设置状态。

28.4K20

前端react面试题指北

为了解决跨浏览兼容性问题,React 会将浏览原生事件(Browser Native Event)封装为合成事件(SyntheticEvent)传入设置事件处理。...); 支持将store与React组件连接,react-redux,mobx- react; (2)区别 Redux更多是遵循Flux模式一种实现,是一个 JavaScript库,它关注点主要是以下几方面...React组件,就需要使用其他框架配合管理异步任务流程,redux-thunk,redux-saga等; Mobx是一个透明函数响应式编程状态管理库,它使得状态管理简单可伸缩∶ Action∶定义改变状态动作函数...因此在这些阶段发岀Ajax请求显然不是最好选择。 在组件尚未挂载之前,Ajax请求将无法执行完毕,如果此时发出请求,将意味着在组件挂载之前更新状态(执行 setState),这通常是不起作用。...最终更新只产生一次组件及其子组件重新渲染,这对于大型应用程序性能提升至关重要。

2.5K30

react-router 使用与优化

history API; react-router 一些组件介绍; react-router 与 redux 结合; react-router 与懒加载; HTML5 路由跳转 history...在静态服务环境,无法直接更改应用程序状态。在这种情况下,可以在 context 特性中标记要渲染结果。如果出现了 context.url,就说明应用程序需要重定向。...在新 ES 标准,有一个 import 异步加载模块语法,可以做到这一点。只是使用时需要下载有关包,因为不兼容。在 create-react-app 已经集成了这一功能。...webpackPrefetch 所用是:当浏览空闲时(网络请求基本都请求完毕了),这时浏览会在后台“偷偷”下载我们异步加载组件,这样当我们触发异步请求时其实组件数据已经在后台下载好了。...而 webpackPreloaded 是将异步加载组件与普通组件一起请求过来,即:preload chunk 会在父 chunk 中立即请求,用于当下时刻。

3.2K10

前端高频react面试题

这些 state 可能包括服务响应、缓存数据、本地生成尚未持久化到服务数据,也包括 UI状态,激活路由,被选中标签,是否显示加载动效或者分页等等。管理不断变化 state 非常困难。...一些库 React 视图在视图层禁止异步和直接操作 DOM来解决这个问题。美中不足是,React 依旧把处理 state 数据问题留给了你。Redux就是为了帮你解决这个问题。...页面重新加载时怎样保留数据?...这个问题就设计到了数据持久化, 主要实现方式有以下几种:Redux: 将页面的数据存储在redux,在重新加载页面时,获取Redux数据;data.js: 使用webpack构建项目,可以建一个文件...react-router 直接可以支持。这个方法适合一些需要临时存储场景。Redux 异步请求怎么处理可以在 componentDidmount 中直接进⾏请求⽆须借助redux

3.2K20

ReactRedux开发实例精解

3.style属性值不能是字符串而必须为对象,对象属性名使用驼峰命名法,font-size为fontSize 4.注释写在{}内 5.数组会自动展开所有成员,但是如果数组或迭代每一项都是...Redux只能实现同步操作,但是可以通过Thunk中间件实现异步 十七、自定义Redux中间件 1.自定义Redux中间件只需要编写一个三层嵌套函数 2.一个异步请求通常需要编写三个action,分别在开始请求...、请求成功和请求失败时被发起 十八、Universal渲染 1.预载数据指的是在服务端准备好数据后再渲染页面,这样浏览接收到才是携带数据页面。...,并在其回调中进行渲染即可 二十一、多页面下异步操作 1.redux-amrc封装了Redux重复性异步操作,只需要将Promise和key值传给redux-amrc,它会完成接下来所有异步操作...是一个用来加载BootstrapWebpack加载,使用Sass处理CSS样式,对于Bootstrap 3&4都能支持 2.PostCSS是一个使用JS插件转换样式工具,Autoprefixer是最流行

2.1K20

2016 JavaScript 技术栈展望

Redux 现在,我们已经具有了开发视图层能力,接下来,我们需要使用其他工具管理应用程序状态和生命周期,在这里推荐工具就是:Redux。...为了配合 React,Facebook 开发了管理单向数据流工具 Flux,虽然 Flux 基本上实现了对单项数据流支持,但是同时也带了其他问题,比如如何保存状态、何处发起 Ajax 请求等等。...目前对于 CSS 处理尚不足够完善。 你可能会考虑如何在部署服务上执行构建呢?...我建议使用 isomorphic-fetch 在各个浏览和服务端保持功能一致性。 当然也可以其他优秀第三方库异步获取数据,但我觉得 fetch 已经够用了。...如果你应用程序只有两三屏,那么就无需使用路由系统;如果你正在创建一个单页应用,那么甚至不需要 Redux,只需要 React 自己 state 属性即可;如果你正在创建一个简单 CRUD 程序,那么你就不需要使用

2K40

2021高频前端面试题汇总之React

Redux 异步请求怎么处理 可以在 componentDidmount 中直接进⾏请求⽆须借助redux。...但是在⼀定规模项⽬,上述⽅法很难进⾏异步管理,通常情况下我们会借助redux异步中间件进⾏异步处理。...或者redux-observable额外范式,上⼿简单 redux-thunk缺陷: 样板代码过多: 与redux本身⼀样,通常⼀个请求需要⼤量代码,⽽且很多都是重复性质 耦合严重: 异步操作与redux...这些 state 可能包括服务响应、缓存数据、本地生成尚未持久化到服务数据,也包括 UI状态,激活路由,被选中标签,是否显示加载动效或者分页等等。 管理不断变化 state 非常困难。...一些库 React 视图在视图层禁止异步和直接操作 DOM来解决这个问题。美中不足是,React 依旧把处理 state 数据问题留给了你。Redux就是为了帮你解决这个问题。

2K00

Zustand:让React状态管理更简单、更高效

接下来,我们将通过一个简单计数示例以及如何在状态存储数组,来展示如何在React项目中使用Zustand。 1. 安装Zustand 首先,你需要在项目中安装Zustand。...快速开始:构建一个计数 接下来,让我们来构建一个简单计数Demo,来快速体验Zustand使用: import React from "react"; import { create } from...然而,Redux一些特性,冗长代码、actions、reducers和中间件等概念引入,对于新手来说可能会显得有些复杂,增加了应用程序复杂度。...它是对于复杂状态管理解决方案Redux一个极佳替代品,特别适合那些需要轻量级足迹中小型应用。...Zustand优势不仅仅在于其轻量级和简单性,还包括其能够轻松集成进现有的React应用,以及它为现代React开发模式(函数组件和Hooks)提供天然支持。

27110
领券