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

在react-redux应用程序中,我应该将非UI数据存储在哪里?

在React-Redux应用程序中,非UI数据通常存储在Redux的store中。Redux是一个用于JavaScript应用程序的状态管理库,它提供了一个集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

基础概念

Redux的核心概念包括:

  • Store:存储应用的状态。
  • Actions:描述发生了什么。
  • Reducers:根据Actions来更新状态。
  • Selectors:用于从store中提取数据。

优势

  • 集中管理状态:使得状态管理更加清晰和可预测。
  • 组件解耦:组件不再直接管理状态,而是通过Redux store来获取和更新状态。
  • 易于调试:Redux提供了中间件支持,如Redux DevTools,可以方便地追踪状态变化。

类型

Redux的状态可以是任何类型的数据,包括但不限于:

  • 对象
  • 数组
  • 字符串
  • 数字
  • 布尔值
  • 函数(通过thunks或其他中间件)

应用场景

任何需要跨组件共享的状态都适合存储在Redux store中,例如:

  • 用户认证信息
  • 应用配置
  • 全局通知
  • 购物车内容

问题与解决

如果你遇到非UI数据存储的问题,可能是由于以下原因:

  1. 状态管理不当:确保所有需要共享的状态都放在Redux store中,而不是在组件内部。
  2. 不必要的重新渲染:使用useSelector钩子时,确保选择器函数是纯函数,并且只返回必要的数据,以避免不必要的组件重新渲染。
  3. 性能问题:如果store中的数据量很大,考虑使用reselect库创建记忆化选择器来优化性能。

示例代码

以下是一个简单的Redux设置示例:

代码语言:txt
复制
// actions.js
export const ADD_TODO = 'ADD_TODO';

export const addTodo = (text) => ({
  type: ADD_TODO,
  payload: text,
});

// reducers.js
import { ADD_TODO } from './actions';

const initialState = {
  todos: [],
};

const todoReducer = (state = initialState, action) => {
  switch (action.type) {
    case ADD_TODO:
      return {
        ...state,
        todos: [...state.todos, action.payload],
      };
    default:
      return state;
  }
};

export default todoReducer;

// store.js
import { createStore } from 'redux';
import todoReducer from './reducers';

const store = createStore(todoReducer);

export default store;

参考链接

通过以上信息,你应该能够理解如何在React-Redux应用程序中存储和管理非UI数据。

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

相关·内容

Flask session的默认数据存储cookie的方式

Flask session默认使用方式说明 一般服务的session数据cookie处存储session的id号,然后通过id号到后端查询session的具体数据。...为了安全,一般session数据都是存储在后端的数据。...但是也有其他的存储方式,如下: Flask session的默认存储方式是整个数据加密后存储cookie,无后端存储 session的id存储url,例如:url?...sid=sessionid,这是session id针对于无法存储cookie情况的做法。 那么本章节主要介绍Flask默认session数据存储cookie的方式。...其中可以知道session的数据存储在这个cookie的value的,而为了保证一定程度的安全,所以设置了密钥进行加密。

4.4K20

Flask session的默认数据存储cookie的方式

Flask session默认使用方式说明 一般服务的session数据cookie处存储session的id号,然后通过id号到后端查询session的具体数据。...为了安全,一般session数据都是存储在后端的数据。...但是也有其他的存储方式,如下: Flask session的默认存储方式是整个数据加密后存储cookie,无后端存储 session的id存储url,例如:url?...sid=sessionid,这是session id针对于无法存储cookie情况的做法。 那么本章节主要介绍Flask默认session数据存储cookie的方式。...其中可以知道session的数据存储在这个cookie的value的,而为了保证一定程度的安全,所以设置了密钥进行加密。

2.2K20
  • ReactReactNative 状态管理终于懂了!redux redux-toolkit 与 rematch 对比总结

    使用 redux,界面展示异常的时候,只需要去 reducer 特定的 action 中加日志,看是哪里调用的、参数是什么。 这样做的代价是:限定了修改、获取状态的实现方式,变得繁琐。...和 Rematch 都是 React 应用程序的状态管理库,提供集中存储和管理应用程序状态的机制。...下面是它们之间的区别: Redux 是一种可预测的 JavaScript 状态容器,用于管理应用程序的状态,类似于全局存储,不依赖于 UI 库或框架。...Redux Toolkit 最大的优势在于使 Redux 应用程序的代码更加简洁、精简,更容易维护。 React-Redux 提供了使用 Redux 的 React 应用的集成方案。...综上所述,Redux 是一种通用的状态管理库,Redux Toolkit 是Redux 应用程序的官方套件,它提供了一些有用的工具来帮助简化应用程序的常见任务,React-Redux 提供了 Redux

    2.1K60

    设计师都能懂的 Redux 指南

    一般来说,我们需要在应用程序管理三个方面的数据 获取和存储数据 数据绑定到 UI 元素 改变数据 比如我们要做一个 Dribbble 的作品页面。作业页面上我们想要展示的数据有哪些?...获取和存储数据 React,我们UI分解为组件。这些组件都可以分解为更小的组件。...如果我们的 UI 是这样构造的,那么填充UI之前,我们什么时候获取数据以及在哪里存储数据 假设每个组件中都有一个厨师。从服务器获取数据就好比是采购所需的所有原材料以准备佳肴。...当从服务器收到否定结果时,可以轻松记录,重放和还原数据更改。 持久化和从状态启动 Redux 可以很容易地应用程序中发生的事情保存到本地存储。...仍然,当存储存在大量数据并且当数据频繁改变时(例如,当用户移动设备上快速键入时),UI 可能因此变得缓慢。

    1.6K10

    从设计的角度看 Redux

    一般来说,我们需要在应用程序管理三个方面的数据 获取和存储数据 数据绑定到 UI 元素 改变数据 比如我们要做一个 Dribbble 的作品页面。作业页面上我们想要展示的数据有哪些?...获取和存储数据 React,我们UI分解为组件。这些组件都可以分解为更小的组件。...图片描述 如果我们的 UI 是这样构造的,那么填充UI之前,我们什么时候获取数据以及在哪里存储数据 假设每个组件中都有一个厨师。从服务器获取数据就好比是采购所需的所有原材料以准备佳肴。...当从服务器收到否定结果时,可以轻松记录,重放和还原数据更改。 持久化和从状态启动 Redux 可以很容易地应用程序中发生的事情保存到本地存储。...仍然,当存储存在大量数据并且当数据频繁改变时(例如,当用户移动设备上快速键入时),UI 可能因此变得缓慢。

    1.7K30

    React 如何使用Redux的说明

    本文中,详细介绍React和Redux的使用,并演示如何将它们结合使用来构建复杂的Web应用程序。 React概述 React是一个用于构建用户界面的JavaScript库。...它会将UI的状态保存在内存,并在需要时更新实际DOM。 组件化:React使用组件化的思想来构建UI。每个组件都是一个独立的、可重用的UI元素。...单向数据流:React使用单向数据流来管理组件之间的通信。组件只能通过props接收数据,并将事件通过回调函数传递给父组件。...Provider组件用于store传递给应用程序的所有组件,而Counter组件则连接了状态和操作,并将它们作为props传递给UI组件。...两者结合使用时,可以使用React-Redux组件和状态连接起来,并通过props传递状态和操作。

    11110

    企业级 React 项目的高级测试设置

    在任何复杂应用,测试是一个至关重要的方面。测试不仅仅是为了提高覆盖率,其主要目的是尽可能地模拟实际使用场景。最近,需要为一个庞大的ReactJS项目建立测试架构。让展示给你我是如何做的。...虽然它还不完整,但我想与你分享的进展。为什么这么做?该项目已经使用Enzyme进行测试。...这有点类似于ReactJS的渲染属性模式。它将接受一个store和一个初始状态作为参数。这些是你想要使用redux存储来测试组件的值。...我们将使用react-router-dom的Router来为第二个URL路径挂载一个虚拟组件,并确保它显示画面。...通过这些高级测试技巧,你可以更全面地测试你的React应用程序,覆盖各种场景和组件。这有助于确保应用程序的质量和稳定性。正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

    9500

    Redux,基础 Redux是什么?React-reduxRedux存在的问题(解决的方案)?Redux的最佳实践?Redux的实现浅析?

    接下来记录的是, 个人在学习Redux时的一些杂七杂八~ Redux是什么?...2.要想更新 state 数据,你需要发起一个 action。Action 就是一个普通 JavaScript 对象用来描述发生了什么。 ?   ...为了组件的复用以及代码的清晰,通常我们组件分为容器组件以及UI组件。...react-redux协助我们分离容器组件和UI组件,通过提供API连接store(提供数据)和UI组件,并且使得UI组件不需要知道存在Redux(复用)。 性能优化。...----store:  应用程序唯一的 Redux store 对象 connect(mapStateToProps, mapDispatchToProps, mergeProps, options)

    1.5K10

    React进阶(6)-react-redux的使用

    更方便的使用Redux 关系: 它不是必须的,实际项目中,可选用.是使用Redux还是使用react-redux,取决于你自己,项目组成员的熟悉程度,适合自己的才是最好的,使用后者提供了一些便利,但需要额外的掌握一些...,那么流程是这样的: component-->actionCreator(data)-->reducer-->component 在上几节内容,我们todolist的组件进行了拆分,拆分成UI组件(...react-redux 安装完成后,可以根目录的package.json查看是否有的 对于理解 react-redux的 Provider和 connect,有必要再次回顾一下之前学过的UI组件和容器组件...UI组件(傻瓜组件/无状态组件) react-redux所有组件分成两大类:UI 组件(presentational component)和容器组件(container component) UI...如果一个组件既有 UI 又有业务逻辑,那怎么办?可以将它拆分成下面的结构:外面是一个容器组件,里面包了一个UI 组件。前者负责与外部的通信,数据传给后者,由后者渲染出视图。

    2K10

    为什么不再用Redux了

    Redux 是 React 生态系统的革命性技术。它使我们能够全局范围内存储不可变数据,并解决了组件树 prop-drilling 的问题。...现在,前端开发的很大一部分负担来自于我们的全局存储的维护工作,我们还要确保这些存储不会遭受状态错误、数据规范化和陈旧数据的困扰。...作为前端开发人员,我们不需要完全了解表及其关系即可创建简单的 UI。我们也不必知道如何高水平地标准化我们的数据。这种责任应该落在设计表的那些人(后端开发人员)身上。...发现自己更容易注意力集中在前端应用程序UI/UX 上,不会再时刻操心整个后端状态了。 要对比这个库和 Redux 的话,我们来看这两种方法的一个代码示例。...本文提到的这些库代表了我们单页应用程序管理状态的方式变革,并且是朝着正确方向迈出的一大步。期待着看到它们能对 React 社区产生怎样的影响。

    2.6K20

    React进阶(6)-react-redux的使用

    更方便的使用Redux 关系: 它不是必须的,实际项目中,可选用.是使用Redux还是使用react-redux,取决于你自己,项目组成员的熟悉程度,适合自己的才是最好的,使用后者提供了一些便利,但需要额外的掌握一些...,那么流程是这样的: component-->actionCreator(data)-->reducer-->component 在上几节内容,我们todolist的组件进行了拆分,拆分成UI组件(...安装完成后,可以根目录的package.json查看是否有的 对于理解 react-redux的 Provider和 connect,有必要再次回顾一下之前学过的UI组件和容器组件 UI组件(傻瓜组件...如果一个组件既有 UI 又有业务逻辑,那怎么办?可以将它拆分成下面的结构:外面是一个容器组件,里面包了一个UI 组件。前者负责与外部的通信,数据传给后者,由后者渲染出视图。...connect是react-redux库提供的一个函数,用于连接UI组件的,并且最终生成一个容器组件,提供了一些映射方法,mapStateToProps以及mapDispatchToProps UI

    2.2K00

    react-redux入门教程

    React-Redux的起源 React实际上只是UI框架,通过 JSX 生成动态 dom 渲染 UI,没有架构、没有模板、没有设计模式、没有路由、也没有数据管理。...因为搞React用Redux的人很多,为了方便使用,Redux 的作者封装了一个 React 专用的库 React-Redux UI组件 React-Redux 所有组件分成两大类:UI 组件(presentational...容器组件 容器组件的特征 负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态 使用 Redux 的 API React-Redux 规定,所有的 UI 组件都由用户提供,容器组件则是由 React-Redux...也就是说,用户负责视觉层,状态管理则是全部交给它 connect() React-Redux提供connect方法,用于从UI组件生成容器组件。connect的意思就是这两种组件连起来。...import { connect } from 'react-redux' const VisibleTodoList = connect()(TodoList); 上面代码,TodoList是 UI

    1.2K30

    React-全局状态管理的群魔乱舞

    它允许开发者将他们的状态「持久化在内存」,并避免大型的项目中,通过props顶层数据,一层一层向下传递的问题。早期开发React应用时,我们总是通过Redux来解决此类问题。...「但是」,这种情况,遇到「大量数据」的传递时候,性能优化是一个不小的挑战。 ❞ ❝第二种方式是「数据存储React外部」,然后以「单例」的形式存储。...「然而」,因为它是内存的一个「单一值」,你不能为「不同的子树」提供不同的数据状态。 ❞ 写入存储状态的能力 一个库应该提供一个直观的API来读取和写入存储数据。...小型应用程序的问题 对于很多早期的应用,它解决了第一个问题。 ❝从组件树的「任何地方」访问存储的状态,以避免多个层次上对数据和函数进行「逐层向下传递」。...随着应用程序的发展,Redux 倾向于「吸纳所有的状态」,不管它是什么类型,因为它提倡单一的存储。 这通常会「导致所有的东西存储一个大的单体存储」。

    3.7K20

    Redux 入门教程(三):React-Redux 的用法

    一、UI 组件 React-Redux 所有组件分成两大类:UI 组件(presentational component)和容器组件(container component)。...负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态 使用 Redux 的 API 总之,只要记住一句话就可以了:UI 组件负责 UI 的呈现,容器组件负责管理数据和逻辑。...你可能会问,如果一个组件既有 UI 又有业务逻辑,那怎么办?回答是,将它拆分成下面的结构:外面是一个容器组件,里面包了一个UI 组件。前者负责与外部的通信,数据传给后者,由后者渲染出视图。...三、connect() React-Redux 提供connect方法,用于从 UI 组件生成容器组件。connect的意思,就是这两种组件连起来。...import { connect } from 'react-redux' const VisibleTodoList = connect()(TodoList); 上面代码,TodoList是 UI

    1.7K50

    彻底让你理解redux

    这里简单介绍下Redux以及其与react结合的使用方法 我们为什么需要Redux,什么是Redux state state才是真正的前端数据库,它存储着这个应用所有需要的数据。...项目的运行效果大家应该能猜到哈,猜不到的clone下项目几几运行下:-) 所以这里的如说问你,这个应用应该存在数据里什么数据呢?...react-redux组建分成了两大类,UI组建和容器组建。...说白了,这个口,就是connect,而redux的所有的组件都是罐子外面的。...这也就说明了,redux并不是只服务我们react哒~也即是这一套逻辑罐子外面,罐子里面是什么其实并不是很在意。。。只要我们预定好action和state就可以了。 所以。。。

    50910

    深入理解redux

    前沿 使用 react 的过程,通常我们会通过 props 父组件的一些数据传递到子组件,兄弟组件传递数据通过一个共同的父级,子传父可以通过回调函数来进行传递,当然这都是比较理想的情况,业务往往不可能仅仅这样简单...,然后再触发 view 层的更新 那在这之前,传统的架构模式一般都是 MVC 架构,也就是模型、视图和控制器,模型(model)主要是负责应用程序数据和业务逻辑,视图(view)负责呈现数据以及用户界面...() 这样的纯函数,这样产生的结果是不可控的,针对不同的 action reducer 函数内部处理,区分不同的 action 返回不同的 state,创建一个简单 reducer 类似下面这样,...函数内部,定义了一个 state 变量和一个 listeners 数组,用于存储状态和监听器。... dispatch 方法,执行 reducer 函数来更新状态,并遍历 listeners 数组,依次调用每个监听器。

    69250

    如何在 React 应用中使用 Hooks、Redux 等管理状态

    现代 React ,我们使用函数组件构建我们的应用程序。...普通 JavaScript 函数没有存储信息的能力。一旦执行完成,它们的代码就会执行并“消失”。 但是有了状态之后,React 函数组件即使执行后也可以存储信息。...值得一提的是, React 应用程序的并非所有组件都必须具有状态,也有无状态组件,它们只呈现其内容而无需存储任何信息,这也很好。...我们的 UI ,我们只是调用 setCount 函数来更新我们的状态。...当需要更具体、更强大的状态管理库时,认为应该在可靠性和简单性之间做出选择。 Redux 是最成熟和使用最广泛的库,它附带大量文档、在线社区以及每个新版本中发现和解决的以前错误。

    8.5K20

    ReactReactNative 状态管理: redux 如何使用

    我们使用使用 react-redux 的 Provider 包围了 App 组件,这样整个 App 组件都可以获取到 Store 的状态和行为处理函数。...connect 的第一个参数 mapStateToProps 用于返回当前 UI 组件需要的数据,这里我们获取到 Store 的 todos 列表。...然后我们就可以 UI 组件通过 prop.todos 获取数据,通过 prop.addTodo 或者 prop.deleteTodo 通知修改数据。...的 Provider 包裹整个 app 组件,把 store 分发给所有组件 最重要的一步: UI 组件里获取数据和分发行为 使用 react-redux 的 connect 包裹 UI...组件 connect 的第一个参数返回一个对象,在其中获取 UI 组件里需要的数据 第二个参数返回一个对象,其中包括要向外分发的行为 UI 组件里通过 props.xxx 的方式获取数据和分发行为

    1.3K20

    react基础--2

    react-redux react-redux需要配合 redux使用,react-redux可实现 redux与react的连接 但需遵循如下规范: 1.所有UI组件都应该包裹一个容器组件,他们是父子关系...2.容器组件是真正和redux打交道的,里面可以随意使用redux的api 3.UI组件不能使用任何redux api 4.容器组件会传给UI组件:1.redux中保存的状态,2.用于操作状态的方法...5.备注:容器给UI传递:状态、操作状态的方法,均通过props传递 基本使用 1.确保ui组件已经创建 2.创建ui组件的容器组件,用于ui组件与redux进行连接 容器组件键入 /container.../components/Count' // 引入connect用于连接ui组件与redux import { connect } from 'react-redux' // 该函数返回的对象的key...注意 redux的reducer函数必须是一个纯函数 也就是必须遵循 1.不得改写参数数据 2.不会产生任何副作用如网络请求 3.不能调用 Data.now()或者Math.random()等不纯方法

    1.2K20
    领券