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

设计师都能懂的 Redux 指南

请不要用 Google 搜索 花哨的后端的东西 我听说过它,但我不知道它是什么,这可能是一个 React 框架 是一种在 React 应用中存储管理状态的更好方式 这个问题,我问过 40 多位设计师,以上是他们的经典回答...你们很多人可能都听说过,它的工作是状态管理。稍后我将解释状态管理的含义, 此刻,我只能想让你看下面这张图: 为什么要了解 Redux Redux 更多的是关于应用程序的内部工作而不是它的外观和感受。...为了成功地设计应用程序界面,设计师还应该对底层的东西有扎实的了解。我们应该了解它可以做什么,理解开发人员为什么使用它,并了解它的优势和含义。...有时候 React 中的内置功能运行得足够好。但随着应用程序变得越来越复杂,仅凭React 可能会更难管理它的状态。这就是为什么许多人开始使用Redux作为替代。...Redux 可以非常轻松地通过网络发送正在发生的事情。 接收另一个用户在另一台机器上执行的操作,重放更改并与本地发生的操作合并是很简单的。

1.7K10

从设计的角度看 Redux

请不要用 Google 搜索 花哨的后端的东西 我听说过它,但我不知道它是什么,这可能是一个 React 框架 是一种在 React 应用中存储管理状态的更好方式 这个问题,我问过 40 多位设计师,以上是他们的经典回答...为什么要了解 Redux Redux 更多的是关于应用程序的内部工作而不是它的外观和感受。 这是一个有点复杂的工具,学习曲线相对陡峭,但这是否意味着我们作为设计师应该远离它? 不。...我认为我们应该拥抱它。汽车设计师应该了解引擎的用途,对吗?为了成功地设计应用程序界面,设计师还应该对底层的东西有扎实的了解。我们应该了解它可以做什么,理解开发人员为什么使用它,并了解它的优势和含义。...有时候 React 中的内置功能运行得足够好。但随着应用程序变得越来越复杂,仅凭React 可能会更难管理它的状态。这就是为什么许多人开始使用Redux作为替代。...Redux 可以非常轻松地通过网络发送正在发生的事情。 接收另一个用户在另一台机器上执行的操作,重放更改并与本地发生的操作合并是很简单的。

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

    百度前端高频react面试题(持续更新中)_2023-02-27

    而不是为每个状态更新编写一个事件处理程序。 React官方的解释: 要编写一个非受控组件,而不是为每个状态更新都编写数据处理函数,你可以使用 ref来从 DOM 节点中获取表单数据。...对 React context 的理解 在React中,数据传递一般使用props传递数据,维持单向数据流,这样可以让组件之间的关系变得简单且可预测,但是单项数据流在某些场景中并不适用。...尽管不建议在app中使用context,但是独有组件而言,由于影响范围小于app,如果可以做到高内聚,不破坏组件树之间的依赖关系,可以考虑使用context 对于组件之间的数据通信或者状态管理,有效使用...在componentWillMount中fetch data,数据一定在render后才能到达,如果忘记了设置初始状态,用户体验不好。...JavaScript中的map不会对为null或者undefined的数据进行处理,而React.Children.map中的map可以处理React.Children为null或者undefined的情况

    2.3K30

    React18的useEffect会执行两次

    因此,对于某些“副作用”的渲染,比如异步接口请求,事件绑定等操作我们通常都放在 useEffect 中执行。 当然,useEffect 除了在组件渲染的时候执行外,在组件卸载的时候也有相关执行操作。...知道了 useEffect 的执行时机,也就能明白为什么 React18 中 useEffect 会执行两次了。...翻译一下,就是说: 正确的问题不是“怎么样让 Effect 执行一次”,而是“怎样修复我的 Effect,让它在(重复)挂载之后正常工作” 也可以理解,毕竟在 React 的未来版本中做离屏渲染的时候...我们可以设置一个 标识位,做到对 请求返回的数据 仅做一次处理与渲染setTodos(json)。...如果不希望请求多次,也可以使用请求接口数据的缓存方案,对返回数据进行缓存。

    8.1K71

    用思维模型去理解 React

    当我在 2014 年开始搭建网站时,很难理解它的工作原理。用 WordPress 构建我的博客很容易,但是我对托管、服务器、DNS、证书等等一无所知。...在组件内,你只能将 prop 从父对象传递到子对象,而父对象看不到子对象内部的内容,这是一项旨在使我们程序的数据流更易于跟踪的功能。...一旦在子级中调用了该函数,它仍存在于相同的闭包中。 这可能很难理解,所以我认为它是闭包之间的“隧道”。每个都有自己的作用域,但是我们可以创建一种将两者连接的通信隧道。...当状态被更改时,其组件将渲染并因此重新执行其中的所有代码。我们这样做是为了向用户显示最新被更新的信息。 在我的思维模型中,状态就像盒子内部的特殊属性。它独立于其中发生的一切。...数据从父级组件共享给子级组件 但是必须首先创建这个,并且发生在 render 上,默认值赋给 state,就像函数一样,该组件中的所有代码都将会被执行。在我的思维模型中,这等效于盒子被“创建”。

    2.5K20

    高级前端react面试题总结

    componentDidMount方法中的代码,是在组件已经完全挂载到网页上才会调用被执行,所以可以保证数据的加载。此外,在这方法中调用setState方法,会触发重新渲染。...在componentWillMount中fetch data,数据一定在render后才能到达,如果忘记了设置初始状态,用户体验不好。...react16.0以后,componentWillMount可能会被执行多次。对React中Fragment的理解,它的使用场景是什么?在React中,组件返回的元素只能有一个根元素。...但是在⼀定规模的项⽬中,上述⽅法很难进⾏异步流的管理,通常情况下我们会借助redux的异步中间件进⾏异步处理。...React 事件处理程序中的多次 setState 的状态修改合并成一次状态修改。

    4.1K40

    react组件用法深度分析

    例如,组件在浏览器中渲染时可能会更改网页的标题,或者可能会将浏览器视图滚动到某个位置。最重要的是,React 组件可以拥有一个私有状态来保存在组件生命周期内可能发生变化的数据。...这个私有状态驱动组件输出到原生 DOM 中!为什么将 React 称为响应式设计?当 React 组件的状态(它是其输入的一部分)发生更改时,它所代表的 UI (其输出)也会发生更改。...UI 描述中的这种变化必须反映在我们正在使用的设备中。在浏览器中,我们需要更新 DOM 树。在 React 应用程序中,我们不会手动执行此操作。...例如,对于todos我们上面看到的数组,如果我们要使用模板语言在UI中显示该数组,我们需要执行以下操作: ...与函数组件不同的是,class 组件中的 render 函数不接收任何参数。八、函数与类在 React 中使用函数组件是受限的。因为函数组件没有 state 状态。

    5.5K20

    react组件深度解读

    例如,组件在浏览器中渲染时可能会更改网页的标题,或者可能会将浏览器视图滚动到某个位置。最重要的是,React 组件可以拥有一个私有状态来保存在组件生命周期内可能发生变化的数据。...这个私有状态驱动组件输出到原生 DOM 中!为什么将 React 称为响应式设计?当 React 组件的状态(它是其输入的一部分)发生更改时,它所代表的 UI (其输出)也会发生更改。...UI 描述中的这种变化必须反映在我们正在使用的设备中。在浏览器中,我们需要更新 DOM 树。在 React 应用程序中,我们不会手动执行此操作。...例如,对于todos我们上面看到的数组,如果我们要使用模板语言在UI中显示该数组,我们需要执行以下操作: ...与函数组件不同的是,class 组件中的 render 函数不接收任何参数。八、函数与类在 React 中使用函数组件是受限的。因为函数组件没有 state 状态。

    5.6K20

    面试必备的13道可以举一反三的Vue面试题

    另外,数据绑定的声明是指令式地写在View的模版当中的,这些内容是没办法去打断点debug的 一个大的模块中model也会很大,虽然使用方便了也很容易保证了数据的一致性,当时长期持有,不释放内存就造成了花费更多的内存...对于大型的图形应用程序,视图状态较多,ViewModel的构建和维护的成本都会比较高 你对Vue生命周期的理解?...或者本组件的值,当数据变化时来执行回调进行后续操作 无缓存性,页面重新渲染时值不变化也会执行 小结: 当我们要进行数值计算,而且依赖于其他数据,那么把这个数据设计为computed 如果你需要在某个数据变化时做一些事情...Vue为什么没有类似于React中shouldComponentUpdate的生命周期?...快速: key的唯一性可以被Map数据结构充分利用,相比于遍历查找的时间复杂度O(n),Map的时间复杂度仅仅为O(1).

    1.3K20

    苦等三年,React Compiler 终于能用了。使用体验:很爽,但仍有瑕疵

    因此在以往的开发方式中,掌握性能优化的手段是高级 React 开发者的必备能力 一个组件节点在 React 中很难被判断为没有发生过更新。因为 props 的比较总是不同的。它的比较方式如下。...但是普通的 React 开发者很难理解他们,有的开发者虽然在项目中大量使用了,但是未必就达到了理想的效果。...不兼容的三方库 例如,我的其中一个项目,检测结果如下 每一项都基本上通过了,那我就可以放心的在项目中引入对应的插件开始体验了。...首先,在父组件中,我们设计了一个数字递增的状态。当点击发生时,状态递增。此时父组件会重新 render。...而是使用了一个名为 useMemoCache 的 hook 来缓存代码片段 Compiler 会分析所有可能存在的返回结果,并把每个返回结果都存储在 useMemoCache 中。

    1.5K10

    一份 2.5k star 的《React 开发思想纲领》

    介绍 《React 开发思想纲领》是: 我开发 React 时的一些思考 每当我 review 他人或自己的代码时自然而然会思考的东西 仅仅作为参考和建议,并非严格的要求 会随着我的经验不断更新 大多数技术点是基础的重构方法论...,SOLID 原则以及极限编程等思想的变体,仅仅是在 React 中的实践而已 你可能会觉得我写的这些非常基础。...可以将最新的值挂在 ref 上来保证这些 hook 在回调中拿到的都是最新的值,同时避免不必要的重新渲染。 使用 map 批量渲染组件时,都加上 key。...只在最顶层使用 hook,不要在循环、条件或嵌套语句中使用 hook。 理解不能对已经卸载的组件执行状态更新的控制台警告。...来看看这些容易发现的代码异味 ❌ 定义了很多参数的函数或方法 ❌ 难以理解的,返回 Boolean 值的逻辑 ❌ 单个文件中代码行数太多 ❌ 在语法上可能相同(但格式化可能不同)的重复代码 ❌ 可能难以理解的函数或方法

    81320

    【React】1260- 聊聊我眼中的 React Hooks

    ,而且也没有语义上的区分(我们仅仅是给返回值赋予了语义),站在 useState的视角,React 怎么知道我什么时候想要name而什么时候又想要age的呢?...以上面的示例代码来看,为什么第 1 行的useState会返回字符串name,而第 3 行会返回数字age呢? 毕竟看起来,我们只是「平平无奇」地调用了两次useState而已。答案是「时序」。...即便我们的封装中不包含任何 Hooks,在调用时也仅仅是包一层useEffect而已,不算费事,而且让这段逻辑也可以在 Hooks 以外的地方使用。...似乎是个好主意,如果状态有变更,就重新获取数据,好像很合理。...比如做数据请求,你可能因此而走上状态驱动的道路,同时,你也要解决状态驱动随之带来的新麻烦。 为了 Mixin ?

    1.1K20

    常见react面试题(持续更新中)

    构造函数主要用于两个目的:通过将对象分配给this.state来初始化本地状态将事件处理程序方法绑定到实例上所以,当在React class中需要设置state的初始值或者绑定事件时,需要加上构造函数,...JavaScript中的map不会对为null或者undefined的数据进行处理,而React.Children.map中的map可以处理React.Children为null或者undefined的情况...props发生变化时执行,初始化render时不执行,在这个回调函数里面,你可以根据属性的变化,通过调用this.setState()来更新你的组件状态,旧的属性还是可以通过this.props来获取,...React Hook 的使用限制有哪些?React Hooks 的限制主要有两条:不要在循环、条件或嵌套函数中调用 Hook;在 React 的函数组件中调用 Hook。那为什么会有这样的限制呢?...那为什么不要在循环、条件或嵌套函数中调用 Hook 呢?因为 Hooks 的设计是基于数组实现。在调用时按顺序加入数组中,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误的 Hook。

    2.6K20

    React-Hooks开篇和React-Hooks-useState

    Hook 概述Hook 是 React 16.8 的新增特性它可以让函数式组件拥有类组件的特性为什么需要 Hook在 Hook 出现之前, 如果我们想在组件中保存自己的状态, 如果我们想在组件的某个生命周期中做一些事情..., 导致代码变得很难以维护(诸如: 在组件被挂载的生命周期中, 可能需要注册监听, 可能需要发送网络请求等)但是在类组件中共享数据是非常繁琐的, 需要借助 Context 或者 Redux 等所以当应用程序变得复杂时...:参数:保存状态的初始值返回值,是一个数组, 这个数组中有两个元素:第一个元素: 保存的状态第二个元素: 修改保存状态的方法import React, {useState} from 'react';export...,博主编写的代码是将之前的引用对象拿到,然后在截取出来在重新设置需要更新的字段即可。...最后本期结束咱们下次再见~ 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。

    16920

    前端高频react面试题整理5

    在React中,当prop或者state发生变化时,可以通过在shouldComponentUpdate生命周期函数中执行return false来阻止页面的更新,从而减少不必要的render执行。...React Hooks 主要解决了以下问题:(1)在组件之间复用状态逻辑很难React 没有提供将可复用性行为“附加”到组件的途径(例如,把组件连接到 store)解决此类问题可以使用 render props...Hook 使我们在无需修改组件结构的情况下复用状态逻辑。 这使得在组件间或社区内共享 Hook 变得更便捷。(2)复杂组件变得难以理解在组件中,每个生命周期常常包含一些不相关的逻辑。...为了解决这个问题,Hook 将组件中相互关联的部分拆分成更小的函数(比如设置订阅或请求数据),而并非强制按照生命周期划分。你还可以使用 reducer 来管理组件的内部状态,使其更加可预测。...)不同点props 是readonly(只读),但是state是可读可写props 来自父组件,state是组件内部的数据对象为什么不直接更新 state 呢 ?

    94030

    为什么我不再用Redux了

    Redux 是 React 生态系统中的革命性技术。它使我们能够在全局范围内存储不可变数据,并解决了在组件树中 prop-drilling 的问题。...需要在应用程序之间共享不可变数据时,它现在依旧是一种可以方便扩展的优秀工具。 但是,为什么我们非得需要一个全局存储呢?...React Query 我已经在自己的多数个人和工作项目中使用 React Query 几个月了。这个库有一个非常简单的 API 和几个 hooks,用于管理查询(获取数据)和突变(更改数据)。...https://react-query.tanstack.com/docs/overview 现在,无论需要什么数据,你都可以将 useQuery hook 与你设置的唯一键(在本例中为“todos”)...本文提到的这些库代表了我们在单页应用程序中管理状态的方式变革,并且是朝着正确方向迈出的一大步。我期待着看到它们能对 React 社区产生怎样的影响。

    2.7K20

    【Hooks】:不是魔法,仅仅是数组

    糟糕的二次渲染 4. 结论 我是 hooks api 的粉丝,但是,在使用 hooks 的时候,它会有一些奇怪的约束。如果你很难理解这些规则,不妨看看这篇文章。 1....1.1. hooks 的 2 个规则 react 核心小组在提案文档指出,有 2 个使用规则是开发者必须去遵守的 不要在循环、条件语句、或嵌套函数中调用 hooks hooks 只能在函数组件中使用 第...React是怎么做的? 我们先标记下 React 内部可能是怎么实现。在渲染一个组件时会执行下图的逻辑。意思是说,数据是被存储在渲染组件之外。...糟糕的二次渲染 state 存储变得不一致,firstName 和 lastName 都被设置成了 Rudi,这很明显是错误的,但是也让我们明白了为什么 hooks 的规则要这样制定。...现在应该明白了为什么 hooks 不能在条件分支和循环中。因为我们处理的是数据集合的指针,要是你改变了调用顺序,指针会对应不上,从而指向错误的数据或处理器。 4.

    67110

    字节前端二面react面试题(边面边更)_2023-03-13

    构造函数主要用于两个目的:通过将对象分配给this.state来初始化本地状态将事件处理程序方法绑定到实例上所以,当在React class中需要设置state的初始值或者绑定事件时,需要加上构造函数,...shouldComponentUpdate 在初始化 和 forceUpdate 不会执行参考 前端进阶面试题详细解答虚拟 DOM 的引入与直接操作原生 DOM 相比,哪一个效率更高,为什么虚拟DOM相对原生的...JavaScript中的map不会对为null或者undefined的数据进行处理,而React.Children.map中的map可以处理React.Children为null或者undefined的情况...对 React 和 Vue 的理解,它们的异同相似之处:都将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库都有自己的构建工具,能让你得到一个根据最佳实践设置的项目模板。...对React中Fragment的理解,它的使用场景是什么?在React中,组件返回的元素只能有一个根元素。

    1.8K10

    这可能是最通俗的 React Fiber 打开方式

    另外不建议在requestIdleCallback中进行DOM操作,因为这可能导致样式重新计算或重新布局(比如操作DOM后马上调用 getBoundingClientRect),这些时间很难预估的,很有可能导致回调执行超时...Generator 是有状态的, 很难在中间恢复这些状态。 上面理解可能有出入,建议看一下原文 可能都没看懂,简单就是 React 尝试过用 Generator 实现,后来发现很麻烦,就放弃了。...调用栈最经常被用于存放子程序的返回地址。在调用任何子程序时,主程序都必须暂存子程序运行完毕后应该返回到的地址。...但是如果不按顺序执行任务,可能会导致前后的状态不一致。比如低优先级任务将 a 设置为0,而高优先级任务将 a 递增1, 两个任务的执行顺序会影响最终的渲染结果。...用Suspense 降低加载状态(load state)的优先级,减少闪屏。比如数据很快返回时,可以不必显示加载状态,而是直接显示出来,避免闪屏;如果超时没有返回才显式加载状态。

    2.3K40
    领券