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

为什么我不再用Redux了

Redux 不是缓存 使用 Redux 和类似的状态管理库时,大多数人都会遇到的一大问题是,我们会将其视为后端状态的缓存。...我们获得了分离关注点的所有好处,同时避开了构建 SPA 的大部分缺点。 后端状态的更简单方法 我认为有两个库比使用 Redux(或类似的状态管理库)存储后端状态要好用很多。...我发现自己更容易将注意力集中在前端应用程序的 UI/UX 上,不会再时刻操心整个后端状态了。 要对比这个库和 Redux 的话,我们来看这两种方法的一个代码示例。...或者更好的方法是,使用 React 的内置状态作为你的简单前端状态,这样做肯定没问题的。...本文提到的这些库代表了我们在单页应用程序中管理状态的方式变革,并且是朝着正确方向迈出的一大步。我期待着看到它们能对 React 社区产生怎样的影响。

2.7K20

玩转 React 服务器端渲染

2 分钟了解 Redux 是如何运作的 关于 Store: 整个应用只有一个唯一的 Store Store 对应的状态树(State),由调用一个 reducer 函数(root reducer)生成...状态树上的每个字段都可以进一步由不同的 reducer 函数生成 Store 包含了几个方法比如dispatch,getState来处理数据流 Store 的状态树只能由dispatch(action)...Reducer Store 是由 reducer 产生的,所以 reducer 实际上反映了 Store 的状态树结构 ..../actions/index.js isomorphic-fetch 是一个前后端通用的 Ajax 实现,前后端要共享代码这点很重要。...然后要把store的状态树写入一个全局变量(__INITIAL_STATE__),这样客户端初始化 render 的时候能够校验服务器生成的 HTML 结构,并且同步到初始化状态,然后整个页面被客户端接管

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

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

    一、前言 本篇文章是『从零玩转 TypeScript + React 项目实战』系列文章的第 9 篇,《深入解析 Dva 进阶特性:打造健壮的前端应用》 在前端开发中,状态管理一直是一个重要话题。...1.1 initialState(初始化状态) 通过对官方文档的观察有非常多的配置项,这里呢我就是带着大家来看其中的一些比较重要的配置项,首先呢就是 initialState,这个配置项是用来初始化状态的...initialState 的值是一个对象,对象的 key 是模型的命名空间,value 是模型的初始状态。value 是一个对象,对象的 key 是模型的属性,value 是属性的初始值。...需要注意的是,如果在模型中也定义了初始状态,initialState 中的值会覆盖模型中的初始值。...首先来看一下在 effects 中发生错误的情况,我在 effects 中故意写一个错误的代码即可演示,在 homeModel 中的 effects 中有一个 *asyncUserInfo 方法,这个方法中有一个请求后端服务器的部分

    17931

    翻译 | 我在 React-Native app开发中曾经犯过的11个错误

    .如果你理解了数据库的结构,你可以正确的规划你的redux store(后面会讲到)....Redux帮助我们正确的存储数据.如果Redux store规划的好,将会是一个一个非常有力的data管理工具.如果没有规划好,会把事情弄的一团糟....可能会用很多不同的结构,你应该找到到底哪种是最适合你的. 6....如果你和我一样是从web转过来的RN开发者,获取用户的手势操作可能多少有点吓人-什么时间开始,何时结束,长点击,短点击.过程不是太清晰,怎么在RN中模拟这些操作?...我们也初始化动画对象的实例,帮助我们使用动画.设定值为0,然后我们定义_setOpacity方法,调用时改变this.opacityAnimated的值.在渲染之前我们插值处理this.opacityAnimated

    74520

    Redux 包教包会(一):解救 React 状态危机

    在目前的富状态前端应用中,如果每一次状态的修改(例如点击一个按钮)都需要与后端通信,那么整个网站的平均响应时间将变得难以接受,用户体验将糟糕透顶。...所以为了适应用户的访问需求,聪明的前端拓荒者们开始将后端的 “数据库” 理念引入到前端中,这样大多数的前端状态可以直接在前端搞定,完全不需要后端的介入。...有了 Redux Store 之后,所有 React 应用中的状态修改都是对这棵 JavaScript 对象树的修改,所有状态的获取都是从这棵 JavaScript 对象树获取,这棵 JavaScript...react-redux 中导出了 connect 函数,它负责将 Store 中的状态注入组件的同时,还给组件传递了一个额外的方法:dispatch,这样我们就可以在组件的 props 中获取这个方法。...注意到我们在 AddTodo 函数式组件中使用了对象解构来获取 dispatch 方法。•导出了我们刚刚创建的 addTodo Action Creators。

    1.8K20

    react结合redux实现一个购物车功能

    分析出功能后,我们来模拟后端的数据,因为笔者在这个案例中没有开发后端接口,所以用本地数据模拟后端数据,为了完全模拟后端数据我们在获取数据的时候需要使用setTimout。...后端数据有了,页面组件也有了,我们开始构造我们的store了,构造store需要先配置reducer,我们引用redux文档中介绍reducer的语句: Reducers 指定了应用状态的变化如何响应...首先第一个变化是从无变成有,我们用init这个指令来指定这个变化,因为store中的数据是从远程服务端获取的(这里我们用本地存储模拟)。...getdata函数生成的action对应着获取初始数据,我们将异步获取数据的过程放到这个action中,得到数据并对数据做处理。...因为远端获取的数据并不包含数据的选中状态,所以我们要对数据做处理,为每一条数据添加一个checked属性,默认为false,这样数据初始状态就都是未选中状态,并且刷新页面,数据又都变为未选中状态,这里的功能类似手淘的购物车功能

    4.8K30

    在 redux 应用中使用 GraphQL

    正如 Sashko Stubailo 指出的: 不幸的是,在 Redux 应用程序中异步加载服务器数据的模式还没有建立起来,并且经常需要使用外部帮助程序库,如 redux-saga。...您将不再需要编写多个操作调度程序、reducer 和规范化程序来在前端和后端之间获取并同步数据。...客户端正在运行,现在是开始添加 GraphQL 客户端的时候了。我们的目标是使用 GraphQL 查询,从服务器轻松获取数据并将其呈现在着陆页(HomeView)中。 3....将从 react-redux 中导出的 connect 方法替换成从 react-apollo 中导出的 connect 方法,同时将 mapQueriesToProps 作为参数传入。...在 mapQueriesToProps 连接到 ApolloClient 之后,查询语句将会在 HomeView 被渲染时自动从后端获取数据,然后通过 props 将数据传递下去。

    1.9K10

    Taro 小程序开发大型实战(六):尝鲜微信小程序云(上篇)

    在这篇⽂章中,我们将使⽤微信小程序云作为我们的后端,并讲解如何引入和实现 Redux 异步工作流来实现小程序端访问⼩程序云的状态管理。... ) } 可以看到,我们增加了微信小程序环境的获取和判断,当当前环境是微信小程序环境时,我们需要调用 Taro.cloud.init() 来进行小程序云环境的初始化 小结 到现在为止...+剩下灰色的部分,所以异步工作流程就变成了这样: view 中 dispatch(asyncAction) 一个异步 action 来获取后端(这里是小程序云)的数据 saga 处理这个异步 action...提示 想了解更多关于微信小程序云函数的内容,可以查阅微信小程序云函数文档:文档地址[14] 如果调用成功,我们可以接收返回值,用于从后端返回数据,这里我们使用解构的方法,从返回体里面拿到了 result...接着,因为我们在 “实现 Redux 异步逻辑” 一节中,保存了 userId 到 Redux Store 的 user 逻辑部分,所以这里我们从 storage 获取到了 _id,然后给之前的 SET_LOGIN_INFO

    2.3K20

    从零开始的 Redux

    Redux 是什么 Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 目前一般与 React 配合使用。React 提供了 React-redux 库,两者能轻松结合起来。...简单上手 在 Redux 中,状态 (state) 是通过 action 改变的,而 action 其实调用了 reducer 方法。..., action) => { 11 // state 默认不存在所以需要制定默认值,也就是初始化,初始化之后每次调用都会传入未被更新的 state 12 // action 中记录了我们制定的 type...不知道有没有注意到开始从根组件传参只能传一层,违背了 store 随时随地使用的原理。这时候 react-redux 登场了。...react-redux 提供一个 Provider 高阶组件,传入一个 store,接下来在下层的所有子组件中用只要使用 connect 方法就可获取到 store。

    37040

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

    虽然像Redux这样的库是管理应用程序状态的流行选择,但你应该明白何时使用它们,何时不使用它们,而且在满足需求时考虑像Context API这样的简单替代方案也很重要。...使用useState()进行基本状态管理我们从使用useState()钩子进行最简单形式的状态管理开始。我们将探讨如何在功能组件内初始化和更新状态。...在Child组件中,我们使用useSelector钩子从Redux store中获取count状态。我们还使用useDispatch钩子获取对dispatch函数的引用。...结论React状态管理提供了一系列选项,从useState()和Context API的简单性到像Redux这样更复杂的库。虽然使用Redux等大型工具很诱人,但评估应用程序的需求很重要。...像Context API这样的简单解决方案通常足以满足较小项目的要求,并避免不必要的复杂性。通过理解不同状态管理方法的优势和权衡,您可以在选择正确解决方案时做出明智的决策。

    48331

    手把手教你全家桶之React(二)

    经排查,发现是node版本的问题,我用nvm来作node版本管理工具,从原本的4.7切换到9.0的版本,运行正确。 ? 我们试用了一下redux,对于在项目熟用的童鞋来说,简直是没难度吧。...connect()的作用有两个:一是从Redux的state中读取部分的数据,并通过props把这些数据返回渲染到组件中;二是传递dispatch(action)到props。...异步action 在实际开发中,我们更多的是用异步action,因为要前后端联合起来处理数据。...它的作用是在action到reducer时作中间拦截,让action从函数的形式转为标准的对象形式,给reducer作正确处理。...npm install --save redux-thunk 引入redux-thunk,打开src/redux/store.js 我们可以使用Redux提供的applyMiddleware方法来使用一个或者是多个中间件

    1.7K80

    手把手教你全家桶之React(二)

    经排查,发现是node版本的问题,我用nvm来作node版本管理工具,从原本的4.7切换到9.0的版本,运行正确。 ? 我们试用了一下redux,对于在项目熟用的童鞋来说,简直是没难度吧。...connect()的作用有两个:一是从Redux的state中读取部分的数据,并通过props把这些数据返回渲染到组件中;二是传递dispatch(action)到props。...异步action 在实际开发中,我们更多的是用异步action,因为要前后端联合起来处理数据。...它的作用是在action到reducer时作中间拦截,让action从函数的形式转为标准的对象形式,给reducer作正确处理。...npm install --save redux-thunk 引入redux-thunk,打开src/redux/store.js 我们可以使用Redux提供的applyMiddleware方法来使用一个或者是多个中间件

    1.4K30

    一份react面试题总结

    React中constructor和getInitialState的区别? 两者都是用来初始化state的。前者是ES6中的语法,后者是ES5中的语法,新版本的React中已经废弃了该方法。...getInitialState是ES5中的方法,如果使用createClass方法创建一个Component组件,可以自动调用它的getInitialState方法来获取初始化的State对象, var...的功能; // useState 只接受一个参数: 初始状态 // 返回的是组件名和更改该组件对应的函数 const [flag, setFlag] = useState(true); // 修改状态...介绍一下react 以前我们没有jquery的时候,我们大概的流程是从后端通过ajax获取到数据然后使用jquery生成dom结果然后更新到页面当中,但是随着业务发展,我们的项目可能会越来越复杂,我们每次请求到数据...中,每次进入页面判断sessionStorage中有没有存储的那个值,有,则读取渲染数据;没有,则说明数据是初始化的状态。

    7.4K20

    面试中会被问及到的vue知识

    ()重新定义(set方法)对象设置属性值和(get方法)获取属性值的操纵来实现的。...的getter和vue组件的computed, vuex的mutation是直接改变的原始数据,而redux的reducer是返回一个全新的state,所以redux结合immutable来优化性能,vue...react是整体的思路的就是函数式,所以推崇纯组件,数据不可变,单向数据流,当然需要双向的地方也可以做到,比如结合redux-form,组件的横向拆分一般是通过高阶组件。...而vue是数据可变的,双向绑定,声明式的写法,vue组件的横向拆分很多情况下用mixin。 10. vuex是什么?怎么使用?哪种功能场景使用它? vuex 就是一个仓库,仓库里放了很多对象。...目前主要有两种数据会使用 vuex 进行管理: 1、组件之间全局共享的数据 2、通过后端异步请求的数据 比如做加入购物车、登录状态等都可以使用Vuex来管理数据状态。

    2.4K30

    公司要求会使用框架vue,面试题会被问及哪些?

    ()重新定义(set方法)对象设置属性值和(get方法)获取属性值的操纵来实现的。...的getter和vue组件的computed, vuex的mutation是直接改变的原始数据,而redux的reducer是返回一个全新的state,所以redux结合immutable来优化性能,vue...react是整体的思路的就是函数式,所以推崇纯组件,数据不可变,单向数据流,当然需要双向的地方也可以做到,比如结合redux-form,组件的横向拆分一般是通过高阶组件。...而vue是数据可变的,双向绑定,声明式的写法,vue组件的横向拆分很多情况下用mixin。 10. vuex是什么?怎么使用?哪种功能场景使用它? vuex 就是一个仓库,仓库里放了很多对象。...目前主要有两种数据会使用 vuex 进行管理: 1、组件之间全局共享的数据 2、通过后端异步请求的数据 比如做加入购物车、登录状态等都可以使用Vuex来管理数据状态。

    2.4K30

    CSR、SSR与同构渲染全方位解析

    概念详解 客户端渲染(CSR) CSR工作原理: 客户端渲染主要依赖于Ajax或者Fetch API从服务器异步获取数据,并通过JavaScript库(如React、Vue、Angular等)在浏览器端构建...对SEO依赖程度不高且用户预期页面加载后会有大量交互操作的场景。 CSR技术挑战: 首次加载时由于缺少初始内容,搜索引擎可能无法正确索引页面,影响SEO排名。...SSR技术挑战: 每次用户请求都需服务器重新计算和渲染页面,增加了服务器端的CPU和内存消耗。 状态管理和缓存策略设计较为复杂,尤其是在处理动态内容和用户登录状态时。...同构渲染适用场景: 需要兼顾SEO与用户体验的大型应用,尤其是面向公众用户、具有丰富功能但又需要快速首屏加载速度的场景。 希望简化前后端分离架构下的开发流程,减少重复编码工作量的项目。...同构渲染技术挑战与解决方案: 资源优化与缓存策略设计,如合理利用客户端缓存,避免不必要的重复渲染。 处理服务器端和客户端之间状态同步的问题,可通过Redux或其他状态管理库来统一管理应用状态。

    23610

    干货 | 携程度假无线前端架构演进之路

    Controller 类的 Model 属性描述了 Model 的初始状态 initialState,以及定义了状态变化方式 actions。...三、从 VOP 到 MOP 的跃迁 我们将目光放到了 Model 层,它承担了应用的状态管理和业务逻辑的职能,是更普适和纯粹的部分。...我们需要让状态管理变成 view agnostic,在独立的 Model 层去管理 state 及其变化,不假定下游是哪种 View Framework。...5)…… Redux 曾经是 React 状态管理的首选方案,它有自己的 devtools 支持便利地通过 action 追溯状态变更历史。...而 View 层里,只需要 Model.useState 获取到当前状态,Model.useActions 获取到状态更新函数,将它们绑定到视图和事件订阅中去即可。

    2.2K30

    【React】211- 2019 React Redux 完全指南

    学习 Redux,从简单 React 开始 我们将采用增量的方法,从带有组件 state 的简单 React 应用开始,一点点添加 Redux,以及解决过程中遇到的错误。...给 Reducer 一个初始状态 记住 reducer 的职责是接收当前 state 和一个 action 然后返回新的 state。 它还有另一个职责:在首次调用的时候应该返回初始 state。...它有点像应用的“引导页”。它必须从某处开始,对吧? 惯用的方式是定义一个 initialState 变量然后使用 ES6 默认参数给 state 赋初始值。...从 React 组件 Dispatch Redux Actions 现在我们的 Counter 已经被 connect 了,我们也获取到了 count 值。...// 同样,把从服务端获取的数据赋给 items。

    4.3K20

    阿里前端二面react面试题_2023-02-28

    state里面的数据问题 Redux设计理念 Redux是将整个应用状态存储到一个地方上称为store,里面保存着一个状态树store tree,组件可以派发(dispatch)行为(action)给store...action如何改变state的,你需要编写reducers Redux源码 let createStore = (reducer) => { let state; //获取状态对象...通过this.state 给组件设置一个初始化的state,第一次render的时候会用state来渲染组件 通过this.setState方法来更新state 什么是 React Hooks?...Hooks是 React 16.8 中的新添加内容。它们允许在不编写类的情况下使用state和其他 React 特性。使用 Hooks,可以从组件中提取有状态逻辑,这样就可以独立地测试和重用它。...(this); // ... } react 生命周期 初始化阶段: getDefaultProps:获取实例的默认属性 getInitialState:获取每个实例的初始化状态 componentWillMount

    1.9K20
    领券