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

React redux在获取新数据之前显示以前的状态旧数据

React Redux 是一个用于管理应用程序状态的 JavaScript 库。它结合了 React 和 Redux,使得状态管理变得简单而强大。通过使用 React Redux,您可以将应用程序的状态存储在 Redux 存储中,并将其作为 props 传递给 React 组件,从而实现数据的共享和更新。

当需要获取新数据之前显示旧数据的状态时,可以通过在 Redux 存储中保留旧数据的方式来实现。以下是一种常见的实现方式:

  1. 定义 Redux 存储的状态结构:在 Redux 中,您可以通过定义存储的状态结构来管理应用程序的状态。例如,您可以使用一个包含数据的对象,其中包含一个字段用于存储旧数据和一个字段用于存储新数据。例如:
代码语言:txt
复制
{
  oldData: {},
  newData: {}
}
  1. 创建 Redux 动作和操作:创建 Redux 动作和操作来更新存储中的数据。例如,可以创建一个动作来获取新数据并将其更新到存储中的 newData 字段中。
代码语言:txt
复制
const FETCH_NEW_DATA_SUCCESS = 'FETCH_NEW_DATA_SUCCESS';

const fetchNewDataSuccess = (data) => ({
  type: FETCH_NEW_DATA_SUCCESS,
  payload: data
});

const fetchData = () => {
  return (dispatch) => {
    // 发起异步请求获取新数据
    api.fetchData()
      .then((response) => {
        dispatch(fetchNewDataSuccess(response.data));
      })
      .catch((error) => {
        // 处理错误
      });
  };
};
  1. 创建 Redux 的 reducer 函数:创建一个 reducer 函数来处理不同的动作类型并更新存储中的状态。在这个 reducer 函数中,可以根据动作类型来更新 newData 字段。
代码语言:txt
复制
const initialState = {
  oldData: {},
  newData: {}
};

const dataReducer = (state = initialState, action) => {
  switch (action.type) {
    case FETCH_NEW_DATA_SUCCESS:
      return {
        ...state,
        oldData: state.newData, // 保留旧数据
        newData: action.payload // 更新为新数据
      };
    default:
      return state;
  }
};
  1. 将 Redux 存储与 React 组件连接:使用 React Redux 的 connect 函数将 Redux 存储中的状态和操作连接到需要访问和更新数据的 React 组件。通过将存储的数据作为组件的 props 传递,组件可以访问旧数据和新数据。
代码语言:txt
复制
import { connect } from 'react-redux';

const YourComponent = ({ oldData, newData, fetchData }) => {
  // 渲染旧数据和新数据
  return (
    <div>
      <h1>旧数据:</h1>
      <p>{JSON.stringify(oldData)}</p>
      <h1>新数据:</h1>
      <p>{JSON.stringify(newData)}</p>
      <button onClick={fetchData}>获取新数据</button>
    </div>
  );
};

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

const mapDispatchToProps = (dispatch) => ({
  fetchData: () => dispatch(fetchData())
});

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

通过上述步骤,您可以在获取新数据之前显示以前的状态旧数据。在点击 "获取新数据" 按钮后,旧数据将会被保存在存储中的 oldData 字段中,并将新数据更新到 newData 字段中。组件通过连接到 Redux 存储来访问这些数据,并可以根据需要进行渲染和处理。

腾讯云提供了一些与 React Redux 相关的产品和服务,例如云函数 SCF(Serverless Cloud Function),可以用于处理后端逻辑;云开发 TCB(Tencent Cloud Base),提供了强大的云端托管能力和数据库服务;COS(Cloud Object Storage),提供了高可用、高扩展性的对象存储服务等等。您可以通过访问腾讯云的官方网站获取更详细的产品信息和文档:腾讯云

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

相关·内容

React进阶(2)-上手实践Redux-如何获取store的数据

效果如下所示: 在控制台中可以多查看组件state的各个状态的,有助于理解React的 在上面的代码中,我们发现组件内部的状态数据是放在当前组件的state进行存储管理的,对于这种小的demo例子,杀鸡焉用宰牛刀使用...创建reducer函数,管理组件共享的数据状态以及一些动作 // reducer是一个纯函数,返回一个新的state给store // 4....在组件内部通过getState()方法就可以拿到store里面的数据,该方法能够获取到store上存储的所有状态         this.state = store.getState();         ...组件内如何获取store中数据,通过调用getState方法获取store中的数据,该方法能够获取到store上存储的所有状态,该方法放置的位置是在constructor函数里面 this.state...,完成新旧数据的替换, 而在组件中如何获取store的数据,是通过getState方法进行获取store中的所有状态

2.3K20

React进阶(2)-上手实践Redux-如何获取store的数据

在控制台中可以多查看组件state的各个状态的,有助于理解React的 在上面的代码中,我们发现组件内部的状态数据是放在当前组件的state进行存储管理的,对于这种小的demo例子,杀鸡焉用宰牛刀使用Redux...创建reducer函数,管理组件共享的数据状态以及一些动作 // reducer是一个纯函数,返回一个新的state给store // 4....在组件内部通过getState()方法就可以拿到store里面的数据,该方法能够获取到store上存储的所有状态 this.state = store.getState();...组件内如何获取store中数据,通过调用getState方法获取store中的数据,该方法能够获取到store上存储的所有状态,该方法放置的位置是在constructor函数里面 this.state...这个的决定,最终该函数返回最新结果会返回给store,完成新旧数据的替换, 而在组件中如何获取store的数据,是通过getState方法进行获取store中的所有状态 那么如何保持页面的组件与store

1.6K10
  • React中使用ajax获取数据在移动浏览器中不显示问题

    在做的一个小项目,页面加载后使用ajax读取本地REST数据,保存在状态中,稍后在form的选择下拉框中显示,代码如下: 150 componentDidMount() { 151...,运行时在电脑端谷歌、火狐浏览器访问,数据都能加载,在手机端使用谷歌浏览器访问,选择下拉框始终为空,这说明手机端浏览器ajax获取数据时出了问题。...,即在页面加载完成后才执行某个函数,如果函数中要操作 DOM,在页面加载完成后再执行会更安全,所以在使用 jQuery 时这样的写法很常见。...$(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用了当前还没加载过来的代码或者...可能的原因是手机端刘览器与电脑端浏览器页面加载中处理脚本时间不同,前者是未等页面加载结束即执行jquery脚本,后者则相反,所以后者不需$(function(){}也可正常显示。

    5.9K20

    【小狮子前端】「Redux」概念理解+实战上手(内含大量实例)

    好处是,所有组件都可以在react-redux的控制之下,所有组件都能访问到Redux中的数据。...- 不能像以前那样在mapDispatchToProps中,为action creator提供依赖注入 对于有可能是复杂应用的:许多公司的项目大部分都是用的redux管理状态,他的许多优点比如单一数据源...react-redux发布了新的版本,与之前的contextAPI分离,提供对hooks的支持,那这不就更香了 新的redux带来的改变 不再需要使用 mapStateToProps,mapDispatchToProps...$store 来读取数据 组件中既可以 dispatch action 也可以 commit updates 在 Redux 中: 我们每一个组件都需要显示的用 connect 把需要的 props 和...Redux每次都是用新的state替换旧的state,而Vuex是直接修改。

    1.4K00

    React中的Redux

    学习必备要点: 首先弄明白,Redux在使用React开发应用时,起到什么作用——状态集中管理 弄清楚Redux是如何实现状态管理的——store、action、reducer三个概念 在React中集成...reducer是一个监听器,只有它可以改变状态。是一个纯函数,它不能修改state,所以必须是生成一个新的state。在default情况下,必须但会旧的state。...store是一个类似数据库的存储(或者可以叫做状态树),需要设计自己的数据结构来在状态树中存储自己的数据。 Redux入门 Redux简介 Redux是一个状态集中管理库。...Action相当于事件模型中的事件,它描述发生了什么。Reducer相当于事件模型中的监听器,它接收一个旧的状态和一个action,从而处理state的更新逻辑,返回一个新的状态,存储到Store中。...参照 Flux 标准 Action 获取关于如何构造 action 的建议,另外还需要注意的是,我们应该尽量减少在action中传递数据。

    4K20

    一天梳理完react面试高频题

    react文档第一条就是声明式,React 使创建交互式 UI 变得轻而易举。为应用的每一个状态设计简洁的视图,当数据改变时 React 能有效地更新并正确地渲染组件。...的单向数据流模式,所以props是从父组件传入子组件的数据Redux 中异步的请求怎么处理可以在 componentDidmount 中直接进⾏请求⽆须借助redux。...,则生成新真实的DOM,随后替换页面中之前的真实DOM【旧虚拟DOM】 中未找到 与 【新虚拟DOM】相同的key 根据数据创建真实DOM,随后渲染到页面什么是state在组件初始化的时候 通过this.state...react中key的作用简单的说:key 是虚拟DOM中的一种标识,在更新显示是key起到了极其重要的作用复杂的说:当状态中的数据发生改变的时候,react会根据【新数据】生成【新的虚拟DOM】,随后react...setState函数之后,会将传入的参数对象与当前的状态合并,然后出发调用过程根据新的状态构建虚拟dom树 经过调和过程,react会高效的根据新的状态构建虚拟DOM树,准备渲染整个UI页面计算新老树节点差异

    4.1K20

    一天完成react面试准备

    ;getSnapshotBeforeUpdate(prevProps, prevState)可以在更新之前获取最新的渲染数据,它的调用是在 render 之后, update 之前;shouldComponentUpdate...但是之前数据结构不支持这样的实现异步 diff,于是 React 实现了一个类似链表的数据结构,将原来的 递归diff 变成了现在的 遍历diff,这样就能做到异步可更新了在 ReactNative中,...组件 D 之前在 集合(A,B,D)中,但集合变成新的集合(A,B)了,D 就需要被删除。...移动:组件D已经在集合(A,B,C,D)里了,且集合更新时,D没有发生更新,只是位置改变,如新集合(A,D,B,C),D在第二个,无须像传统diff,让旧集合的第二个B和新集合的第二个D 比较,并且删除第二个位置的...它不但没有问题,而且如果根据以前的状态( state)以及属性来修改当前状态,推荐使用这种写法。React中的状态是什么?它是如何使用的状态是 React 组件的核心,是数据的来源,必须尽可能简单。

    82471

    手摸手教你基于Hooks 的 Redux 实战姿势

    如果使用新的 Redux Hooks,会更加简单!这里是一个关于 Redux 的速成班,将配合 React 函数组件使用: 1....Redux 使您可以集中存放 JavaScript 应用程序的状态(数据) 它最常与 React 一起使用(通过 react-redux ) 这使您可以从树中的任何组件访问或更改状态。 ? 2....selector 只是一个有趣的词:“从 store 获取数据的功能” 然后,向 useSelector 中传入回调,该回调中可获取整个 redux 的状态,您只需选择该组件所需的内容 ?...Actions 不是“调用”的,而是“分配”给 reducer 的 Action 的 type 属性告诉 reducer 接下来该做什么 (返回新状态或旧状态) ? 7....重要的是,reducer 返回一个新的状态对象(而不是修改旧的对象的属性),这样,当对象中的属性发生某些改变时,组件将重新渲染。

    1.5K20

    React总结概括

    因为这个原因react的虚拟dom就显得难能可贵了,它创造了虚拟dom并且将它们储存起来,每当状态发生变化的时候就会创造新的虚拟节点和以前的进行对比,让变化的部分进行渲染。...state是数据中心,它的状态决定着视图的状态。这时候发现似乎和我们一直推崇的MVC开发模式有点区别,没了Controller控制器,那用户交互怎么处理,数据变化谁来管理?...当组件更新的时候,react会创建一个新的虚拟dom树并且会和之前储存的dom树进行比较,这个比较多过程就用到了diff算法,所以组件初始化的时候是用不到的。...dom树和旧的dom树进行diff算法对比,节省大量性能,尤其是在dom结构复杂的时候。...监听到state发生变化后调用它来获取新的state数据,如果做到这一步,说明我们已经成功了。

    1.2K20

    【React】归纳篇(十)组件间通信方式之Redux | UI组件AntDesign | Redux-react

    (即:页面地址的跳转都是在浏览器端实现的,不会去重新请求服务端获取 html,html 只是在应用初始化的时候加载一次。).../docs/react/use-with-create-react-app-cn redux (难点) 语法套路深 文档:http://www.redux.org.cn 概览 redux 是一个独立专门用于做状态管理的...state时,自动调用 React Components : 通过Store读取状态并显示;更新状态; dispatch(action):分发(触发)事件 type、data (事件机制) Reducers...(oldState,action){return newState} 旧状态返回新状态 Action Creators 工厂函数 ,生产action函数,用type标识函数类型。...react-redux 1、一个react插件库 2、专门用于简化react应用中使用redux 使用redux先写好结构: 在src中新建redux和containers文件夹 在redux文件夹下写好如下文件名

    26330

    React进阶篇(八)react redux

    redux是参考Flux设计原则的一个管理数据流的库。 下图为redux的核心运作流程 ? redux 三大原则: 单一数据源:整个应用的状态都保存在一个对象(store)中。...Redux核心API Redux的核心是一个store - 存储状态。...个方法: getState():获取store中当前的状态 dispatch(action):分发一个action,并返回这个action,这是唯一能改变store中数据的方式 subscribe(listener...Redux性能优化 使用react-redux 在使用react-redux的connect函数时,实际上产生了一个无名的React组件类,这个类定制了shouldComponentUpdate函数的实现...2)用reselect提高数据获取性能 工作原理:只要相关状态没有改变,就直接使用上一次的缓存结果。

    1.4K30

    Redux

    reducer就是一个纯函数,接受旧的state和action,返回新的state。...安装React-Redux: npm install --save react-redux ​ Redux的React绑定库是基于容器组件和展示组件相分离的开发思想,这个思想非常重要。...展示组件 容器组件 作用 描述如何展现(骨架、样式) 描述如何运行(数据获取、状态更新) 直接使用Redux 否 是 数据来源 props 监听Redux state 数据修改 从props调用回调函数...在footer里显示一个可切换的显示全部/只显示completed的/只显示incompleted的todos。 展示组件和他们的props: TodoList用于显示todos列表。...为了实现状态过滤,需要实现FilterLink的容器组件来渲染Link并在点击时触发对应的action: VisibleTodoList根据当前显示的状态来对todo列表进行过滤,并渲染TodoList

    1.8K20

    常见react面试题

    store状态的变更,都应该通过action触发,异步任务(通常都是业务或获取数据任务)也不例外,而为了不将业务或数据相关的任务混入React组件中,就需要使用其他框架配合管理异步任务流程,如redux-thunk...redux使用plain object保存数据,需要手动处理变化后的操作;mobx适用observable保存数据,数据变化后自动处理响应的操作 redux使用不可变状态,这意味着状态是只读的,不能直接去修改它...图片 这就意味着,如果 dom 节点发生了跨层级移动,react 会删除旧的节点,生成新的节点,而不会复用。...解答 在 React 16.8版本(引入钩子)之前,使用基于类的组件来创建需要维护内部状态或利用生命周期方法的组件(即componentDidMount和shouldComponentUpdate)。...如果这还不够糟糕,考虑一些来自前端开发领域的新需求,如更新调优、服务端渲染、路由跳转前请求数据等。state 的管理在大项目中相当复杂。

    3K40

    设计师都能懂的 Redux 指南

    状态是不断变化的数据,状态决定在用户界面上显示什么。 状态管理是什么意思?...如果我们的 UI 是这样构造的,那么在填充UI之前,我们什么时候获取数据以及在哪里存储数据 假设每个组件中都有一个厨师。从服务器获取数据就好比是采购所需的所有原材料以准备佳肴。...注意:在React(16.3)的最新版本中,有一个新的 context API,它的提取数据功能几乎与 Redux 是相同的。...在更新应用程序状态之前,可能需要等待多个服务器的响应。我们可能需要在不同的时间、不同的条件下更新多处 state 的状态。...事实上,正如我们之前所讨论的,Redux在几个重要方面补充了React。 React 是最最常见的 Redux 用例。

    1.7K10

    从设计的角度看 Redux

    状态是不断变化的数据,状态决定在用户界面上显示什么。 状态管理是什么意思?...图片描述 如果我们的 UI 是这样构造的,那么在填充UI之前,我们什么时候获取数据以及在哪里存储数据 假设每个组件中都有一个厨师。从服务器获取数据就好比是采购所需的所有原材料以准备佳肴。...注意:在React(16.3)的最新版本中,有一个新的 context API,它的提取数据功能几乎与 Redux 是相同的。...在更新应用程序状态之前,可能需要等待多个服务器的响应。我们可能需要在不同的时间、不同的条件下更新多处 state 的状态。...事实上,正如我们之前所讨论的,Redux在几个重要方面补充了React。 React 是最最常见的 Redux 用例。

    1.7K30

    美团前端经典react面试题整理_2023-02-28

    (1)节点之间的比较。 节点包括两种类型:一种是 React组件,另一种是HTML的DOM。 如果节点类型不同,按以下方式比较。 如果 HTML DOM不同,直接使用新的替换旧的。...如果组件类型不同,也直接使用新的替换旧的。 如果 HTML DOM类型相同,按以下方式比较。...一般使用新的 props替换旧的 props,并在之后调用组件的 componentWillReceiveProps方法,之前组件的 render方法会被调用。...componentDidMount:组件构建完成 (2)在存在期的五大阶段,调用方法的顺序如下。 componentWillReceiveProps:组件即将接收新的属性数据。...它不但没有问题,而且如果根据以前的状态( state)以及属性来修改当前状态,推荐使用这种写法。 React- Router有几种形式? 有以下几种形式。

    1.5K20

    前端经典react面试题(持续更新中)_2023-03-15

    Js方式undefined根据用户权限类型,把菜单配置成json, 没有权限的直接不显示react-router 方式 在route 标签上 添加onEnter事件,进入路由之前替换到首页Redux实现原理解析为什么要用redux在React中,数据在组件中是单向流动的,数据从一个方向父组件流向子组件(通过props),所以,两个非父子组件之间通信就相对麻烦,...redux的出现就是为了解决state里面的数据问题Redux设计理念Redux是将整个应用状态存储到一个地方上称为store,里面保存着一个状态树store tree,组件可以派发(dispatch)...行为(action)给store,而不是直接通知其他组件,组件内部通过订阅store中的状态state来刷新自己的视图图片Redux三大原则唯一数据源整个应用的state都被存储到一个状态树里面,并且这个状态树...图片这就意味着,如果 dom 节点发生了跨层级移动,react 会删除旧的节点,生成新的节点,而不会复用。

    1.3K20

    react16常见api以及原理剖析

    在 2014 年出的持久性数据结构的库,持久性指的是数据一旦创建,就不能再被更改,任何修改或添加删除操作都会返回一个新的 Immutable 对象。...: immutable data structures(持久性数据结构)与 structural sharing(结构共享),持久性数据结构保证数据一旦创建就不能修改,使用旧数据创建新数据时,旧数据也不会改变...,不会像原生 js 那样新数据的操作会影响旧数据。...左边是旧值,右边是新值,我需要改变左边红色节点的值,生成的新值改变了红色节点到根节点路径之间的所有节点,也就是所有青色节点的值,旧值没有任何改变,其他使用它的地方并不会受影响,而超过一大半的蓝色节点还是和旧值共享的...(在以前得写进不同生命周期里); 深入理解 react 原理 react 虚拟 dom 原理剖析 react 组件的渲染流程 使用 react.createElement 或 JSX 编写 react

    1K10

    前端二面高频react面试题集锦_2023-02-23

    diff 虚拟DOM 比较的规则 【旧虚拟DOM】 与 【新虚拟DOM】中相同key 若虚拟DOM中的内容没有发生改变,直接使用旧的虚拟DOM 若虚拟DOM中的内容发生改变了,则生成新真实的DOM...,随后替换页面中之前的真实DOM 【旧虚拟DOM】 中未找到 与 【新虚拟DOM】相同的key 根据数据创建真实DOM,随后渲染到页面 React-Router 4怎样在路由变化时重新渲染同一个组件...Redux 的中间件提供的是位于 action 被发起之后,到达 reducer 之前的扩展点,换而言之,原本 view -→> action -> reducer -> store 的数据流加上中间件后变成了...React的状态提升就是用户对子组件操作,子组件不改变自己的状态,通过自己的props把这个操作改变的数据传递给父组件,改变父组件的状态,从而改变受父组件控制的所有子组件的状态,这也是React单项数据流的特性决定的...使用箭头函数(arrow functions)的优点是什么 作用域安全:在箭头函数之前,每一个新创建的函数都有定义自身的 this 值(在构造函数中是新对象;在严格模式下,函数调用中的 this 是未定义的

    2.8K20

    滴滴前端高频react面试题汇总_2023-02-27

    react中key的作用 简单的说:key 是虚拟DOM中的一种标识,在更新显示是key起到了极其重要的作用 复杂的说:当状态中的数据发生改变的时候,react会根据【新数据】生成【新的虚拟DOM】,随后...react进行【新虚拟DOM】 和 【旧的虚拟DOM】的diff比较,而在这个比较过程中key就是起到是关键中用 在调用setState 之后发生了什么 状态合并,触发调和: setState函数之后...保存数据,数据变化后⾃动处理响应的操作 redux使⽤不可变状态,这意味着状态是只读的,不能直接去修改它,⽽是应该返回⼀个新的状态,同时使⽤纯函数;mobx中的状态是可变的,可以直接对其进⾏修改 mobx...你对【单一数据源】有什么理解 redux使用 store将程序的整个状态存储在同一个地方,因此所有组件的状态都存储在 Store 中,并且它们从 Store 本身接收更新。...,通过this.props获取旧的属性,通过nextProps获取新的props,对比两次props是否相同,从而更新子组件自己的state。

    1.2K20
    领券