首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    社招前端一面react面试题汇总

    表达式的时候需要用 {}在jsx中写标签的类名的时候 用className 代替class内联样式的时候 ,需要style={{key:value}}标签必须要闭合标签首字母的约定 若为小写字母,则将jsx转换为...React 将 render 函数返回的虚拟 DOM 树与老的进行比较,从而确定 DOM 要不要更新、怎么更新。...在组件尚未挂载之前,Ajax请求将无法执行完毕,如果此时发出请求,将意味着在组件挂载之前更新状态(如执行 setState),这通常是不起作用的。...redux-saga优点:异步解耦:异步操作被被转移到单独saga.js中,不再是掺杂在action.js或component.js中;action摆脱thunk function: dispatch的参数依然是...redux-observable缺陷:学习成本奇⾼:如果你不会rxjs,则需要额外学习两个复杂的库;社区⼀般:redux-observable的下载量只有redux-saga的1/5,社区也不够活跃,在复杂异步流中间件这个层

    3.9K20

    42. 精读《前端数据流哲学》

    可能是参考了 koa 中间件的设计思路,redux middleware 将 action 对接到 reducer 的黑盒的控制权暴露给了开发者。...另一种是类似 redux-observable,将 rxjs 数据流处理能力融合到已有数据流框架中, redux-observable 将 action 与 reducer 改造为 stream 模式,...对 action 中副作用行为,比如发请求,也提供了封装好的函数转化为数据源,因此,将 redux middleware 中的副作用,转移到了数据源转换做成中,让 action 保持纯函数,同时增强了原本就是纯函数的...redux 通过在 action 做副作用,将副作用隔离在 reducer 之外,使 reducer 成为了纯函数。 rxjs 将副作用先转化为数据源,将副作用隔离在管道流处理之外。...由此我们可以开一个脑洞,通过运算符重载,让 mutable 方式得到 immutable 的结果。

    1.2K20

    2021高频前端面试题汇总之React篇

    state作为props传递给调用者,将渲染逻辑交给调用者。...使用react-thunk中间件 redux-thunk优点: 体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码 使⽤简单: redux-thunk没有引⼊像redux-saga或者redux-observable...不同,redux-observable虽然也有额外学习成本但是背后是rxjs和⼀整套思想 体积庞⼤: 体积略⼤,代码近2000⾏,min版25KB左右 功能过剩: 实际上并发控制等功能很难⽤到,但是我们依然需要引...= initTodoList(res.data) // 将action发送到reducer yield put(action) }catch(e){...作为开发者,我们编写的是声明式的代码,而 React 框架的主要工作,就是及时地把声明式的代码转换为命令式的 DOM 操作,把数据层面的描述映射到用户可见的 UI 变化中去。

    2.4K00

    前端react面试题(必备)2

    在React 17之前,如果使用了JSX,其实就是在使用React, babel 会把组件转换为 CreateElement 形式。...1)使用react-thunk中间件redux-thunk优点:体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码使⽤简单: redux-thunk没有引⼊像redux-saga或者redux-observable...不同,redux-observable虽然也有额外学习成本但是背后是rxjs和⼀整套思想体积庞⼤: 体积略⼤,代码近2000⾏,min版25KB左右功能过剩: 实际上并发控制等功能很难⽤到,但是我们依然需要引...= initTodoList(res.data) // 将action发送到reducer yield put(action) }catch(e){ console.log...另外, React并没有直接将事件附着到子元素上,而是以单一事件监听器的方式将所有的事件发送到顶层进行处理(基于事件委托原理)。

    2.9K20

    高级前端react面试题总结

    1)使用react-thunk中间件redux-thunk优点:体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码使⽤简单: redux-thunk没有引⼊像redux-saga或者redux-observable...额外的学习成本: redux-saga不仅在使⽤难以理解的 generator function,⽽且有数⼗个API,学习成本远超redux-thunk,最重要的是你的额外学习成本是只服务于这个库的,与redux-observable...不同,redux-observable虽然也有额外学习成本但是背后是rxjs和⼀整套思想体积庞⼤: 体积略⼤,代码近2000⾏,min版25KB左右功能过剩: 实际上并发控制等功能很难⽤到,但是我们依然需要引...= initTodoList(res.data) // 将action发送到reducer yield put(action) }catch(e){ console.log...而replaceState 是完全替换原来的状态,相当于赋值,将原来的 state 替换为另一个对象,如果新状态属性减少,那么 state 中就没有这个状态了。

    5.1K40

    字节前端必会react面试题1

    而replaceState 是完全替换原来的状态,相当于赋值,将原来的 state 替换为另一个对象,如果新状态属性减少,那么 state 中就没有这个状态了。...1)使用react-thunk中间件redux-thunk优点:体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码使⽤简单: redux-thunk没有引⼊像redux-saga或者redux-observable...额外的学习成本: redux-saga不仅在使⽤难以理解的 generator function,⽽且有数⼗个API,学习成本远超redux-thunk,最重要的是你的额外学习成本是只服务于这个库的,与redux-observable...不同,redux-observable虽然也有额外学习成本但是背后是rxjs和⼀整套思想体积庞⼤: 体积略⼤,代码近2000⾏,min版25KB左右功能过剩: 实际上并发控制等功能很难⽤到,但是我们依然需要引...= initTodoList(res.data) // 将action发送到reducer yield put(action) }catch(e){ console.log

    3.8K20

    JS实现简易的计算器

    : (4-1) 如果S1为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈; (4-2) 否则,若优先级比栈顶运算符的高,也将运算符压入S1(注意转换为前缀表达式时是优先级较高或相同,而这里则不包括相同的情况...“)”,则依次弹出S1栈顶的运算符,并压入S2,直到遇到左括号为止,此时将这一对括号丢弃; (6) 重复步骤(2)至(5),直到表达式的最右边; (7) 将S1中剩余的运算符依次弹出并压入S2; (8)...7,再将7入栈; (3) 将5入栈; (4) 接下来是×运算符,因此弹出5和7,计算出7×5=35,将35入栈; (5) 将6入栈; (6) 最后是-运算符,计算出35-6的值,即29,由此得出最终结果...,将运算符较高的压入后缀表达式 if (!...,将运算符较高的压入后缀表达式 288 if (!

    11.8K10

    Groovy 运算符 条件运算符,对象运算符学习

    取反运算符,表达为 "not" 。一般是将结果值进行取反操作。 例如表达式为true,取反后,输出结果为false。表达式为false,取反后,输出为true。 示例如下: println(!...为了避免这种情况,安全导航操作符将简单地返回null,而不是抛出异常,如下所示:运算符:?...特别是适合将现有方法转换为战略模式的需要,示例如下: class Zinyan { String name //名称 int age //年龄 //创建一个转换函数...存储起来 ,存储起来的数据变量就是 Closure对象了 def action = z1....集合中的数据,使用stream流输出,并进行map 映射操作 3::add 就是转换为BigInteger.add +3的操作, collect中转换为List对象。

    2.5K10

    分享 20 个提升效率的 JavaScript 缩写小技巧

    false]; let filterArray = arr.filter(Boolean); // [12, 'xyz', -25, 0.5] Boolean 是 JavaScript 的内置构造函数,通过将值传递给它来将值转换为布尔值...传统写法: const observable = require('mobx/observable'); const action = require('mobx/action'); const runInAction...const odd = [1, 3, 5]; const nums = [2, ...odd, 4, 6]; 你还可以将扩展运算符与 ES6 的解构语法结合使用: const { a, b, ...z...17、转换为布尔值 使用双逻辑 NOT 运算符可以将任何值转换为布尔值。 !!23 // TRUE !!"" // FALSE !!0 // FALSE !!...{} // TRUE 单个逻辑 NOT 运算符已经可以将值转换为布尔类型并对它取反,因此,第二个逻辑 NOT 运算符再次对其取反,将其返回到其原始含义并将其保留为布尔类型。

    61120

    Laravel学习教程之View模块详解

    函数获取视图文件中的被PHP解释器认为是HTML(T_INLINE_HTML)的部分,然后依次进行Comments、Extensions、Statements 和 Echos部分的正则替换; 注释部分 核心代码如下,将注释符号...“{{-- --}}”包裹的代码替换为空字符串; preg_replace("/{{--(.*?)...extend方法向BladeCompiler添加自定义处理的回调函数,对模板内容进行自定义的文本匹配替换; 核心代码在IlluminateViewBladeCompiler文件中,如下: // 自定义的文本替/...extensions as $compiler) { $value = call_user_func($compiler, $value, $this); } return $value; } 指令替换 这部分就是将类似...输出未转义字符,用于输出原生带html标签的值; {{ }}正常输出,支持三目运算符替换; {{{ }}}输出转义字符,支持三目运算符替换; 三目运算符替换是指:{{ $a ?: "默认值" }

    2.1K20

    Github Actions YAML语法详解(二)

    .defaults 设置将应用到workflow中所有job或指定job的默认设置。在job中定义的默认设置将覆盖在workflow中定义的同名默认设置。....steps[*].uses 指定在当前step中要运行的action。action是一种可重复使用的代码单位; jobs....如果当前输入的不是action需要的输入参数,那么这些参数将被设置为环境变量。该变量的会自动加上前缀INPUT_,并转换为大写; jobs....以使用运算符组合文字、上下文引用和函数。达式通常在工作流程文件中与条件性if关键词一起用来确定步骤是否应该运行。...当if条件为true时,步骤将会运行; 在if条件下使用表达式时,可以省略表达式语法({{ }}),因为GitHub会自动将if条件作为表达式求值,除非表达式包含任何运算符。

    1.3K30
    领券