首页
学习
活动
专区
圈层
工具
发布

React组件设计实践总结05 - 状态管理

这种开发方式的变化其实得益于 Virtual-DOM, 它使得我们不需要关心浏览器底层 DOM 的操作细节,只需关心‘状态(state)’和‘状态到 UI 的映射关系(f)’....在考虑引入状态管理之前考虑一下这些手段是否可以解决你的问题: 是否可以通过抬升 State 来实现组件间通信? 如果跨越的层级太多,数据是否可以通过 Context API 来实现共享?...例如: 简单的使用 Context API 来做状态管理: image.png 最近 hooks 用得比较爽(参考上一篇文章: 组件的思维),我就想配合 Context API 做一个状态管理器,...视图是响应式数据的映射 数据变更. mobx 推荐在 action/flow(异步操作) 中对数据进行变更,action 可以认为是 Redux 中的 dispatch+reducer 的合体。...推荐在 flow 函数中隔离副作用,这个东西和 Redux-saga 差不多,通过 generator 来进行异步操作和副作用隔离 上面就是 Mobx 的核心概念。

2.8K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    redux&react-redux

    4、 redux只负责管理状态,至于状态的改变驱动着页面的展示,要靠我们自己写 什么情况下需要使用redux 1、某个组件的状态,需要让其他组件可以随时拿到(共享)。...:传递action{type:’’,data:’’} getState:获取store的值 api createStore :专门用于创建redux中最为核心的store对象 applyMiddleware...,返回值是一个对象,默认接收state作为参数 //mapDispatchToProps:映射操作状态的方法,返回值是一个对象,默认接收dispatch作为参数 //[备注]:容器组件中的store是靠...connect( state=>({key:value}),//映射状态 {key:xxxxxAction}//映射操作状态的方法 )(UI组件) redux&react-redux书写流程 1...(映射状态---mapStateToprops(state),映射操作状态的方法--mapDispatchToProps(dispatch))(UI组件) 4、contant文件 写入需要用到的常量分别导出

    93710

    学习react-redux,看这篇文章就够啦!

    # reducer 编写规则 只根据 state 和 action 参数计算新的状态值 不允许修改现有的 state 值,必须通过复制现有的值 不能做任何异步的操作逻辑、以及副作用【可以通过插件接触此问题...每个 reducer 函数都负责管理对应的状态片段,并根据相应的 action 类型来更新状态。通过这种方式,一个 Redux 应用可以同时管理多个相关联的状态。...只负责 UI 的呈现,不带有任何业务逻辑 没有状态(即不使用 this.state 这个变量) 所有数据都由参数(this.props)提供 不使用任何 Redux 的 API 下面就是一个 UI 组件的例子...负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态 使用 Redux 的 API 总之,只要记住一句话就可以了:UI 组件负责 UI 的呈现,容器组件负责管理数据和逻辑 React-Redux...2、vuex 只适用于 vue 框架之中 # 设计上 1、redux redux 中不可以直接修改原始 state 数据,需要拷贝原数据进行修改 不可执行异步操作,但可以通过中间件处理异步操作 2、vuex

    2.3K20

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

    :是一个用于管理组件公共状态的一个可预测状态的框架,集中管理组件的状态.核心在于store,它提供了dispatch,getState,subscribe方法,理解Redux的工作流程很重要 react-redux...,获取state等工作,同时它提供了两个好用的API,Provider和connect,在下文中我们会学习到的 安装react-redux 既然是一个第三方的模块,那么可以通过npm或者yarn的方式下载...容器组件(聪明组件) 容器组件的特征与UI组件相反 负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态(state) 使用 Redux 的 API(下面会有具体的例子),比如:dispatch...前者负责输入逻辑(mapStateToProps),即将state映射到 UI 组件的参数(props),后者负责输出逻辑(mapDispatchToProps),即将用户对 UI 组件的操作映射成 Action...props,然后在组件内部通过 this.props的方式拿到,这是不同于之前 this.state的方式的,其实就是一个映射关系。

    2.8K10

    深入Redux架构

    关于redux 之前写了一篇通过一个demo了解Redux,但对于redux的核心方法没有进行深入剖析,在此重新总结学习,完整的代码看这里。...State 也要进行改造,反映不同的操作状态。...只负责 UI 的呈现,不带有任何业务逻辑 没有状态(即不使用this.state这个变量) 所有数据都由参数(this.props)提供 不使用任何 Redux 的 API 下面就是一个 UI 组件的例子...负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态 使用 Redux 的 API 总之,只要记住一句话就可以了:UI 组件负责 UI 的呈现,容器组件负责管理数据和逻辑。...它们定义了 UI 组件的业务逻辑。前者负责输入逻辑,即将state映射到 UI 组件的参数(props),后者负责输出逻辑,即将用户对 UI 组件的操作映射成 Action。

    2.9K60

    react-redux入门教程

    React-Redux的起源 React实际上只是UI框架,通过 JSX 生成动态 dom 渲染 UI,没有架构、没有模板、没有设计模式、没有路由、也没有数据管理。...UI组件的特征 只负责 UI 的呈现,不带有任何业务逻辑 没有状态(即不使用this.state这个变量) 所有数据都由参数(this.props)提供 不使用任何 Redux 的 API 下面就是一个...容器组件 容器组件的特征 负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态 使用 Redux 的 API React-Redux 规定,所有的 UI 组件都由用户提供,容器组件则是由 React-Redux...组件,VisibleTodoList就是由 React-Redux 通过connect方法自动生成的容器组件。...它们定义了 UI 组件的业务逻辑。前者负责输入逻辑,即将state映射到 UI 组件的参数(props),后者负责输出逻辑,即将用户对 UI 组件的操作映射成 Action。

    1.6K30

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

    帮我们做了监听,获取state等工作,同时它提供了两个好用的API,Provider和connect,在下文中我们会学习到的 安装react-redux 既然是一个第三方的模块,那么可以通过npm或者yarn..., 没有状态,UI的渲染通过外部的props传入(即不使用this.state这个变量) 所有数据都由参数(this.props)对象提供 不使用任何 Redux 的 API 如下所示, UI 组件的例子...,与UI = render(data)完全吻合 容器组件(聪明组件) 容器组件的特征与UI组件相反 负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态(state) 使用 Redux 的 API...前者负责输入逻辑(mapStateToProps),即将state映射到 UI 组件的参数(props),后者负责输出逻辑(mapDispatchToProps),即将用户对 UI 组件的操作映射成 Action...props,然后在组件内部通过 this.props的方式拿到,这是不同于之前 this.state的方式的,其实就是一个映射关系。

    3K00

    fish_redux使用详解---看完就会用!

    这图在语雀上调了半天,就在上面加了个自己的github水印地址 [fish_redux流程] 通过俩个流程图对比,其中还是有一些差别的 redux里面的store是全局的。...这边我们使用的是玩Android的api,这个api有个坑的地方,没设置开启跨域,所以运行在web上,这个api使用会报错,我在玩Android的github上提了issue,哎,也不知道作者啥时候解决...里初始化了数据源,就没有后期更新数据的操作,所以就不需要:action,effect,reducer这三个文件!...RouteConfig:这里将页面标识和页面映射分开写,这样我们跳转页面的时候,就可以直接引用RouteConfig里面的页面标识 StoreConfig:全局模块里最重要的就是状态的判断,注释写的很清楚了...,会报空指针 /// 下面的字段,赋初值,就是初始时展示的全局状态 /// 这地方初值,理应从缓存或数据库中取,表明用户选择的全局状态 themeColor: Colors.lightBlue

    3.1K43

    react项目架构之路初探

    redux 三大原则:单一数据源,只读的state,使用纯函数来修改 redux是一款 状态管理库,并且提供了react-redux来与react紧密结合,核心部分为Store,Action,Reducer...数据流通的关系:通过Store中的这个对象提供的dispatch方法 =》 触发action=》改变State =》 导致其相关的组件 页面重新渲染 达到更新数据的效果 核心Api以及相关的功能源码分析...redux-saga 通过创建 Sagas 将所有的异步操作逻辑收集在一个地方集中处理,可以用来代替 redux-thunk 中间件。...(dispatch,getState),在函数体内进行业务逻辑的封装 redux-thunk的缺点: action的形式不统一 ,异步操作太分散,分散在了各个action中 redux-saga本质是一个可以自执行的...解决了 共享数据的可变状态 2. 实现了时间旅行的功能 (对比与git提交) 3.

    2.9K10

    『Dva』深入解析 Dva 进阶特性:打造健壮的前端应用

    1.1 initialState(初始化状态) 通过对官方文档的观察有非常多的配置项,这里呢我就是带着大家来看其中的一些比较重要的配置项,首先呢就是 initialState,这个配置项是用来初始化状态的...在 Dva 中,我们可以通过 initialState 来初始化应用的状态。 initialState 是用来专门初始化 Model 中的 state 默认值的,那怎么指定呢?...还可以在创建 Dva 实例的时候通过 initialState 来初始化状态。...创建了一个 Dva 实例,然后通过 initialState 属性来初始化 home 模型的状态。...等),但其核心价值在于通过 Model 机制简化 Redux 的使用,让状态管理变得更加直观和可维护。

    1.3K31

    React 进阶 - React Redux

    # 状态管理应用场景 # 组件间共用数据 应用初始化时候,只请求一次数据,然后通过状态管理把数据存起来,需要数据的组件只需要从状态管理中‘拿’就可以了。...单向数据流 整个 Redux ,数据流向都是单向的 state 只读 在 Redux 中不能通过直接改变 state ,来让状态发生变化,如果想要改变 state ,那就必须触发一次 action...# 核心 API createStore 通过 createStore 可以创建一个 Store ,使用者可以将这个 Store 保存传递给 React 应用 const store = createStore...,那么会将 Redux state 中的数据,映射到当前组件的 props 中,子组件可以使用消费 当需要的 state ,有变化的时候,会通知当前组件更新,重新渲染视图 可以利用 connect 提供的功能...,做数据获取,数据通信,状态派发等操作。

    1.6K10

    CodeBuddy IDE完全食用手册:从安装到生产力爆发的技术流解剖

    环境准备:Windows/macOS/Linux | 8GB+内存 | Python 3.8+ / Node.js 14+ 一、极速安装与工程初始化 ▍ 安装(终端操作实录) # 下载独立安装包(含预训练模型...(pending/shipped) ▍ 场景2:跨平台天气预报APP(Flutter+Django) 操作实录: Figma转Flutter页面 // 自动生成的主页框架 class WeatherScreen...在Vue的data()中初始化cart: { items: [] } 2. 添加v-if="cart.items"避免空值渲染     2....Redux切片用于管理{模块名}状态" template: | import { createSlice } from '@reduxjs/toolkit'; const ${1:module...绑定快捷键:Settings > Keymaps    推荐配置: Ctrl+Alt+R:生成Redux切片 Ctrl+Alt+A:生成API接口 七、性能监控与调优 ▍ 资源消耗看板 #

    2.3K30

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

    前两篇教程介绍了 Redux 的基本用法和异步操作,今天是最后一部分,介绍如何在 React 项目中使用 Redux。...只负责 UI 的呈现,不带有任何业务逻辑 没有状态(即不使用this.state这个变量) 所有数据都由参数(this.props)提供 不使用任何 Redux 的 API 下面就是一个 UI 组件的例子...负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态 使用 Redux 的 API 总之,只要记住一句话就可以了:UI 组件负责 UI 的呈现,容器组件负责管理数据和逻辑。...组件,VisibleTodoList就是由 React-Redux 通过connect方法自动生成的容器组件。...它们定义了 UI 组件的业务逻辑。前者负责输入逻辑,即将state映射到 UI 组件的参数(props),后者负责输出逻辑,即将用户对 UI 组件的操作映射成 Action。

    2.4K50

    数据流管理方案 | Redux 和 MobX 哪个更好?

    使用 Context API 维护全局状态 Context API 是 React 官方提供的一种组件树全局通信的方式。...Store(数据层):它是存储应用状态的“仓库”,此外还会定义修改状态的逻辑。store 的变化最终会映射到 view 层上去。...对于组件来说,任何组件都可以通过约定的方式从 store 读取到全局的状态,任何组件也都可以通过合理地派发 action 来修改全局的状态。...Redux 通过提供一个统一的状态容器,使得数据能够自由而有序地在任意组件之间穿梭,这就是 Redux 实现组件间通信的思路。...Redux 的缺点 1)繁重的代码模板:修改一个state可能要动四五个文件,可谓牵一发而动全身。 2)store 里状态残留:多组件共用 store 里某个状态时要注意初始化清空问题。

    2.7K21

    react高频面试题总结(附答案)

    构造函数主要用于两个目的:通过将对象分配给this.state来初始化本地状态将事件处理程序方法绑定到实例上所以,当在React class中需要设置state的初始值或者绑定事件时,需要加上构造函数,...componentWillReceiveProps在初始化render的时候不会执行,它会在Component接受到新的状态(Props)时被触发,一般用于父组件状态更新时子组件的重新渲染。...映射为真实的 DOM 操作是这样的,React 会创建一个 div 节点。...策略三:同一层级的子节点,可以通过标记 key 的方式进行列表对比。(基于节点进行对比)元素比对主要发生在同层级中,通过标记节点操作生成补丁。节点操作包含了插入、移动、删除等。...React的状态提升就是用户对子组件操作,子组件不改变自己的状态,通过自己的props把这个操作改变的数据传递给父组件,改变父组件的状态,从而改变受父组件控制的所有子组件的状态,这也是React单项数据流的特性决定的

    3.1K40

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

    (即:页面地址的跳转都是在浏览器端实现的,不会去重新请求服务端获取 html,html 只是在应用初始化的时候加载一次。)...简单来说,路由就是用来跟后端服务器进行交互的一种方式,通过不同的路径来请求不同的资源。...state时,自动调用 React Components : 通过Store读取状态并显示;更新状态; dispatch(action):分发(触发)事件 type、data (事件机制) Reducers...什么情况需要redux: 某个组件的状态,需要共享 某个状态需要在任何地方都可以拿到 一个组件需要改变全局状态 一个组件需要改变另一个组件的状态 使用 一个规定的套路。需要多写几遍。...通过props接收数据,一般数据和函数 不使用任何Redux的API 一般保存在components文件下 容器组件 负责管理数据和业务逻辑,不负责UI的呈现 使用Redux的APi 一般保存在

    1.1K30

    一文入门react全家桶

    a)强制绑定this: 通过函数对象的bind() b)箭头函数 3.状态数据,不能直接修改或更新 2.3. 组件三大核心属性2: props 2.3.1..../redux 7.1.2. redux是什么 1.redux是一个专门用于做状态管理的JS库(不是react插件库)。...3.作用: 集中式管理react应用中多个组件共享的状态。 7.1.3. 什么情况下需要使用redux 1.某个组件的状态,需要让其他组件可以随时拿到(共享)。..., 值类型任意, 可选属性 3.例子:{ type: ‘ADD_STUDENT’,data:{name: ‘tom’,age:18} } 7.2.2. reducer 1.用于初始化状态、加工状态。...通过props接收数据(一般数据和函数) 3)不使用任何 Redux 的 API 4)一般保存在components文件夹下 2.容器组件 1)负责管理数据和业务逻辑,不负责UI的呈现 2)使用 Redux

    4.4K20
    领券