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

redux、mobx、concent特性大比拼, 看后生如何对局前辈

,本文主要说的和react搭配使用的对比效果,所以下文里提到的redux、mobx暗含了react-redux、mobx-react这些让它们能够在react中发挥功能的绑定库,而concent本身是为了...changeName = e=> this.setState({firstName:e.target.name}) render(){...} } invoke function _changeName...,用户不需要不知道observable等相关术语和概念,某一次渲染你取值有了点这个值的依赖,而下一次渲染没有了对某个stateKey的取值行为就应该移出依赖,这一点vue做得很好,为了让react拥有更优雅...任何可以从应用程序状态派生的内容都应该派生,揭示了一个的的确确存在且我们无法逃避的问题,大多数应用状态传递给ui使用前都会伴随着一个计算过程,其计算结果我们称之为衍生数据。...回顾与总结 相比mobx可以直接从this.pops.someStore获取,concent可以直接从ctx.moduleComputed上获取,多了一个手动维护计算依赖的过程或映射挑选结果的过程,相信哪种方式是开发者更愿意使用的这个结果已经一目了然了

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

    面试官最喜欢问的几个react相关问题

    它具有以下特点:异步与同步: setState并不是单纯的异步或同步,这其实与调用时的环境相关:在合成事件 和 生命周期钩子 (除 componentDidUpdate) 中,setState是"异步...实现,也是处于事务流中;问题: 无法在setState后马上从this.state上获取更新后的值。...,传入的函数将会被 顺序调用;注意事项:setState 合并,在 合成事件 和 生命周期钩子 中多次连续调用会被优化为一次;当组件已被销毁,如果再次调用setState,React 会报错警告,通常有两种解决办法将数据挂载到外部...state、 各种组件生命周期钩子等,但是在函数定义中,我们却无能为力,因此 React 16.8 版本推出了一个新功能 (React Hooks),通过它,可以更好的在函数定义组件中使用 React...中使用useState,React 会报错提示;类组件不会被替换或废弃,不需要强制改造类组件,两种方式能并存;重要钩子状态钩子 (useState): 用于定义组件的 State,其到类定义中this.state

    5.3K20

    setup vs 5 react hooks,助你避开沟中陷阱

    setup vs 5 react hooks,助你避开"沟"中陷阱 [image.png] 序言 本文主题围绕concent的setup和react的五把钩子来展开,既然提到了setup就离不开composition...(6); const [bigNum, setBigNum] = useState(120); } useCallback 如需使用缓存函数,则要用到第二把钩子useCallback,此处我们使用这把钩子来定义加减函数...,有时我们也称实例上下文),我们可按需获从ctx上取出目标数据和方法,针对此示例,我们可以导出 state(数据),settings(setup打包返回的法法),refComputed(实例的计算函数结果容器...register即可,需要注意的是装配后的类组件,可以从this.ctx上直接获取concent为其生成的渲染上下文,同时呢this.state和this.ctx.state是等效的,this.setState...和this.ctx.setState也是等效的,方便用户代码0改动即可接入concent使用。

    3.5K101

    React常见面试题

    【hook执行位置】不要在循环、条件 、嵌套中调有hook,必须始终在react函数顶层使用Hook,这是因为react需要利用调用顺序来正确更新相应的状态,以及调用相应的钩子函数,否则会导致调用顺序不一致性...=createContext({}); function A(){ //从store中取值 const {name}=useContext...停止恢复的时机取决于当前的一帧(16ms)内,还有没有足够的时间允许计算 fiber是react16中新发布的特性; 解决的问题: react在渲染过程时,从setState开始到渲染完成,中间过程是同步...react 主要提供了一种标准数据流的方式来更新视图; 但是页面某些场景是脱离数据流的,这个时候就可以使用 refs; react refs 是用来获组件引用的,取后可以调用dom的方法; 使用场景 管理焦点...,其实本身执行过程和代码都是同步的,只是合成事件和钩子函数的调用顺序在更新之前;在异步更新中,多次setState后面的值会覆盖前面的; # 为什么setState不设计成同步的?

    5.4K20

    React生命周期深度完全解读

    图片 注:红色为 React 17 已经废弃的生命周期钩子,绿色为新增的生命周期钩子在首次渲染页面时,会调用 Mount 相关生命周期钩子;在之后的页面渲染中,会调用 Update 相关生命周期钩子。...在首次渲染组件时,不会调用此生命周期钩子;使用 this.setState 触发组件更新时,也不会调用此生命周期钩子。...需要注意的是:这个生命周期函数是类的静态方法,并不是原型中的方法,所以在其内部使用 this 访问到的不是组件实例。此生命周期钩子不常用,如果可以的话,我们也尽可能不会使用它。...这个生命周期钩子使用频率较小,因为我们一般在 constructor 中初始化 state,在 componentDidMount 中引入副作用或者订阅内容。...并在 17.0 以及之后的版本中:删除了 componentWillMount、componentWillReceiveProps、componentWillUpdate 这三个生命周期钩子。

    2.8K32

    07-React Hooks(路由组件懒加载, Context上下文, 组件优化...)

    useState /** * 使用范围: 用于函数式组件, 使函数式组件具备state的能力 * useState的使用方式 * 1: 从react库中引入 useState 函数 * 2: 使用函数创建值引用和方法引用...三个生命周期钩子函数的集合 * useEffect的使用方式 * 1: 从react库中引入 useEffect 函数 * 2: 使用函数完成生命周期钩子函数 * -:具体使用看下面注释 *...: 用于函数式组件, 使函数式组件具备React.createRef的能力 * useRef的使用方式 * 1: 从react库中引入useRef函数 * 2: 使用函数创建属性 const myRef...渲染时会被丢弃 * 使用方式: * 1: 从react库中引入 * 2: 一般包裹在最外层 * 3: 只接受唯一一个属性 key * 4: 如不过想写, 可以使用空标签替换 */...: * 1: 从react中引入React * 2: 创建: const UserNameContext = createContext('dance') * -: 看下方注释 */ import

    1.8K30

    认识组合api,换个姿势撸更清爽的react

    (6); const [bigNum, setBigNum] = useState(120); } useCallback 如需使用缓存函数,则要用到第二把钩子useCallback,此处我们使用这把钩子来定义加减函数...useMemo,此处我们使用这把钩子来计算按钮颜色 const numBtnColor = useMemo(() => { return num > 100 ?...),我们可按需获从ctx上取出目标数据和方法,针对此示例,我们可以导出 state(数据),settings(setup打包返回的法法),refComputed(实例的计算函数结果容器)这3个key来使用即可...register即可,需要注意的是装配后的类组件,可以从this.ctx上直接获取concent为其生成的渲染上下文,同时呢this.state和this.ctx.state是等效的,this.setState...和this.ctx.setState也是等效的,方便用户代码0改动即可接入concent使用。

    1.7K4847

    React 入门学习(十七)-- React 扩展

    action 对象驱动状态更新 我们可以通过 setCount 来更新 count 的值 setCount(count + 1) useEffect 在类式组件中,提供了一些声明周期钩子给我们使用,我们可以在组件的特殊时期执行特定的事情...,在类式组件中,我们会调用生命周期钩子 componentDidUnmount 来实现,在函数式组件中,我们的写法更为简单,我们直接在 useEffect 的第一个参数的返回值中实现即可 也就是说,第一个参数的函数体相当于...MyContext static contextType = MyContext; 在使用时,直接从 this.context 上取值即可 const {username,age} = this.context...PureComponent 在我们之前一直写的代码中,我们一直使用的Component 是有问题存在的 只要执行 setState ,即使不改变状态数据,组件也会调用 render 当前组件状态更新,也会引起子组件...react 身上暴露出 PureComponent 而不使用 Component import React, { PureComponent } from 'react' 就这~听了半天结果就只一个 PureComponent

    1K30

    React 入门学习(十七)-- React 扩展

    action 对象驱动状态更新 我们可以通过 setCount 来更新 count 的值 setCount(count + 1) useEffect 在类式组件中,提供了一些声明周期钩子给我们使用,我们可以在组件的特殊时期执行特定的事情...,在类式组件中,我们会调用生命周期钩子 componentDidUnmount 来实现,在函数式组件中,我们的写法更为简单,我们直接在 useEffect 的第一个参数的返回值中实现即可 也就是说,第一个参数的函数体相当于...MyContext static contextType = MyContext; 在使用时,直接从 this.context 上取值即可 const {username,age} = this.context...PureComponent 在我们之前一直写的代码中,我们一直使用的Component 是有问题存在的 只要执行 setState ,即使不改变状态数据,组件也会调用 render 当前组件状态更新,也会引起子组件...react 身上暴露出 PureComponent 而不使用 Component import React, { PureComponent } from 'react' 就这~听了半天结果就只一个 PureComponent

    1.2K30

    年前端react面试打怪升级之路

    在非受控组件中,可以使用一个ref来从DOM获得表单值。而不是为每个状态更新编写一个事件处理程序。...React官方的解释:要编写一个非受控组件,而不是为每个状态更新都编写数据处理函数,你可以使用 ref来从 DOM 节点中获取表单数据。...那为什么不要在循环、条件或嵌套函数中调用 Hook 呢?因为 Hooks 的设计是基于数组实现。在调用时按顺序加入数组中,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误的 Hook。...1. setState是同步执行的setState是同步执行的,但是state并不一定会同步更新2. setState在React生命周期和合成事件中批量覆盖执行在React的生命周期钩子和合成事件中,...setState的对象,把他们合并在一起形成一个新的 单一对象,并用这个单一的对象去做setState的事情,就像Object.assign的对象合并,后一个 key值会覆盖前面的key值经过React

    3.1K10

    React入门十:组件的生命周期

    组件的生命周期:组件从创建到挂载到页面中运行,再到组件不用时卸载的过程。 生命周期的每一个阶段都是伴随一些方法调用,这些方法就是生命周期的钩子函数。...注意:如果调用setState()更新状态,必须放在 if 条件中 直接将 setState()写到 componentDidUpdate()中,则会报错 class Counter extends React.Component...==this.props.count){ this.setState({}) // 发送ajax请求的代码 } } } 2.3 卸载时 执行时机:组件从页面消失...钩子函数 触发时机 作用 componentWillUnmount 组件卸载(从页面消失) 执行清理工作(比如:清理定时器) 我们现在做一个小例子:点击三次之后不再计数,将文本换成stop。...,钩子中写一个定时器 class Counter extends React.Component{ render(){ console.log("Counter render") return

    1.2K20

    useTypescript-React Hooks和TypeScript完全指南

    这些功能可以在应用程序中的各个组件之间使用,从而易于共享逻辑。Hook 令人兴奋并迅速被采用,React 团队甚至想象它们最终将替换类组件。...Hooks 是 React 16.8 新增的特性,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 默认情况下,React 包含 10 个钩子。...从更细的使用角度来说 useCallback 缓存函数的引用,useMemo 缓存计算数据的值。...当你需要从元素中提取值或获取与 DOM 相关的元素信息(例如其滚动位置)时,可以使用此方法。...它允许您在 React Dev Tools 中显示自定义钩子函数的标签。 示例 我之前基于 umi+react+typescript+ant-design 构建了一个简单的中后台通用模板。

    11K30

    校招前端经典react面试题(附答案)

    它具有以下特点:异步与同步: setState并不是单纯的异步或同步,这其实与调用时的环境相关:在合成事件 和 生命周期钩子 (除 componentDidUpdate) 中,setState是"异步...实现,也是处于事务流中;问题: 无法在setState后马上从this.state上获取更新后的值。...,与事务流无关,自然是同步;而setTimeout是放置于定时器线程中延后执行,此时事务流已结束,因此也是同步;批量更新 : 在 合成事件 和 生命周期钩子 中,setState更新队列时,存储的是 合并状态...setState(fn),在fn中返回新的state对象即可,例如this.setState((state, props) => newState);使用函数式,可以用于避免setState的批量更新的逻辑...,传入的函数将会被 顺序调用;注意事项:setState 合并,在 合成事件 和 生命周期钩子 中多次连续调用会被优化为一次;当组件已被销毁,如果再次调用setState,React 会报错警告,通常有两种解决办法将数据挂载到外部

    2.7K20

    React高级特性解析

    react conText 使用API React.createContext  返回的是组件对象 可以利用结构的方式 第一种方式 使用Provider包裹的组件都可以获取提供者的value Context.Consumer...Context 则会自动向上查找 然后在组件内部可以通过this.context获取值 Portals插槽 可以将一个dom插入到其他dom下面ReactDOM.createPortal(需要插入的节点...主要是在代码逻辑中对这些组件进行 不会产生任何的额外节点 hello React.lazy  React.suspense 懒加载 React.lazy(().../OtherComponent'));   这样导入的组件 如果有多个懒加载组件 那么展示会以加载时间最长的组件显示 React.suspense 参数 fallback 懒加载过程中需要展示的内容 原理分析...setState不会立马改变React组件和state的值 setState通过触发一次组件的更新来引发重绘 多次setState函数调用产生的效果会合并 本文为作者原创,手码不易,允许转载,转载后请以链接形式说明文章出处

    1.2K20

    react-组件学习笔记

    =[‘a’,”b”,”c’]; } render (){ retrurn (…); } } Props 注入属性,一般是从外组件或者外界条件传入的初始化数值,一般是基础数据类型。...this.setState({ Liked },callBack) } 组件的生命周期 每个组件都有自己的声明周期,react用不同的方法来描述它的生命周期,我们可以称为钩子函数, 生命周期如下...分析如下: 可以从state计算中的得到的展示,写到state中。...组件并不需要保存到state中,只需要render方法中渲染即可 props中的数据,可以看做组件的数据来源,因此也不需要保存在state中 dom操作 我们大多数情况直接用setState获取值,但某些情况还是需要...dom操作的,那么这个时候可以通过ref实现,在源上定义ref=’targetName’ 然后使用的时候 let hobbyInput = this.refs.targetName let hobby

    78730

    React.js的生命周期

    在本节中,将学习如何使Clock组件真正 可重用和封装 它将设置自己的计时器,并每秒更新一次. 从封装时钟开始 ?...Clock 现在被定义为一个类而不只是一个函数 使用类就允许我们使用其它特性,例如局部状态、生命周期钩子 3 为一个类添加局部状态 三步将 date 从属性移动到状态中 在render()中使用this.state.date...当 Clock 的输出插入到 DOM 中时,React 调用 componentDidMount() 生命周期钩子。...一旦Clock组件被从DOM中移除,React会调用componentWillUnmount()这个钩子函数,定时器也就会被清除。...在 React 应用程序中,组件是有状态还是无状态被认为是可能随时间而变化的组件的实现细节。 可以在有状态组件中使用无状态组件,反之亦然。

    2.8K20
    领券