首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

,如果key不一样,则react先销毁该组件,然后重新创建该组件React组件的构造函数有什么作用?...一个输入表单元素,它的值通过 React 的这种方式来控制,这样的元素就被称为"受控元素"。React.Children.mapjsmap有什么区别?...React Hook 的使用限制有哪些?React Hooks 的限制主要有两条:不要在循环、条件或嵌套函数中调用 Hook; React函数组件中调用 Hook。那为什么会有这样的限制呢?...那为什么不要在循环、条件或嵌套函数中调用 Hook 呢?因为 Hooks 的设计是基于数组实现。调用时按顺序加入数组中,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误的 Hook。...同时引用这三个库react.jsreact-dom.js和babel.js它们都有什么作用

2.6K20

React极简教程: Hello,World!React简史React安装Hello,World

函数式编程:把运算过程尽量写成一系列嵌套函数调用。 函数式编程强调没有”副作用”,意味着函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。...) { return n * 2 }) console.log (doubled) //=> [2,4,6,8,10] map利用当前的数组创建了一个新数组,新数组里的每个元素都是经过了传入map函数...注意,我们传入map的是一个纯函数;它不具有任何副作用(不会改变外部状态),它只是接收一个数字,返回乘以二后的值。...也就是说,你的函数可以像变量一样被创建,修改,并当成变量一样传递,返回或是函数嵌套函数。...函数式编程的几个技术 map & reduce :这个技术不用多说了,函数式编程最常见的技术就是对一个集合做Map和Reduce操作。这比起过程式的语言来说,代码上要更容易阅读。

59010

20道高频React面试题(附答案)

经常被误解的只有类组件中才能使用 refs,但是refs也可以通过利用 JS 中的闭包与函数组件一起使用。...React Hooks 的限制主要有两条:不要在循环、条件或嵌套函数中调用 Hook; React函数组件中调用 Hook。那为什么会有这样的限制呢?...那为什么不要在循环、条件或嵌套函数中调用 Hook 呢?因为 Hooks 的设计是基于数组实现。调用时按顺序加入数组中,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误的 Hook。...React Hooks平时开发中需要注意的问题和原因(1)不要在循环,条件或嵌套函数中调用Hook,必须始终 React函数的顶层使用Hook这是因为React需要利用调用顺序来正确更新相应的状态,...React.Children.mapjsmap有什么区别?

1.7K10

React基础(3)-不可不知的JSX

** {}插值表达式内可以可以变量,字符串,普通HTML元素,甚至可以是组件,还可以是函数 import React from 'react'; // 引入react.js,通过import关键字实例化一个...**注意**: React必须在作用域内,JSX其实就是React.createElement函数的语法糖,React.createElement是更接近底层的API,所以React库也必须包含在JSX...代码作用域内 引入React库一部分目的就是为了识别JSX语法的,这也是为什么只要你定义一个React组件时,要引入React库的原因 使用点(.)语法 有时候,一个模块中需要导出多个React组件时...,则可以先转数组,然后使用数组的一些方法:例如map方法进行处理一下 var obj = { name: "川川", age: "你猜,小鲜肉一枚" } var getAttr = Object.keys...中添加属性的命名方式应是camelCase驼峰式命名来定义属性的名称,JSX中的子元素可以是字符串,可以嵌套,以及js表达式,函数都可以作为子元素 并且React中组件的定义以及调用处,组件名称首字母必须要大写

1.8K10

React进阶」我函数组件中可以随便写 —— 最通俗异步组件原理

不可能的事 我的函数组件中里可以随便写,很多同学看到这句话的时候,脑海里应该浮现的四个字是:怎么可能?因为我们印象中的函数组件,是不能直接使用异步的,而且必须返回一段 Jsx 代码。...1.jpg 那么今天我将打破这个规定,我们认为是组件的函数里做一些意想不到的事情。接下来跟着我的思路往下看吧。...首先先来看一下 jsx , React JSX 中 代表 DOM 元素,而 代表组件, Index 本质是函数组件或类组件。...言归正传,那么以函数组件为参考,Index 已经约定俗成为这个样子: function Index(){ /* 不能直接的进行异步操作 */ /* return 一段 jsx 代码 */...衍生版——实现一个错误异常处理组件 言归正传,我们不会在函数组件中做如上的骚操作,也不会自己去编写 createFetcher 和 Susponse。

3.6K30

react hook 那些事儿

它将函数组件的功能升级了,原来只能在类组件中使用的state,context等都可以函数组件中使用了。...react hook一般是以use开头,比如useState,useEffect,通过使用这种方式,我们就能够函数组件中使用react的库的功能。...相比于类组件,你会发现函数组件的代码要少的非常多,代码看起来很简洁,使用起来也非常的方便,虽然官方没有说要移除类组件,但是官方更倾向使用函数组件,如果你是新入门react的话,强烈建议你使用react...使用react hook 的几个准测 虽然react hook很方便,但是也要遵循几个原则来书写。 只有组件的最顶层才可以使用react hook,也就意味着,你不能在循环,条件,嵌套函数中使用它。...方便点记的话就是return之前使用它。 只react functions 中使用hook,不要在普通的js函数中使用它,当然你可以自定义的hooks中使用hook。

48920

React源码解析之React.children.map()

看到一个有趣的现象,就是多层嵌套数组[item, [item, [item]]]经过map()后,平铺成[item,item,item]了,接下来以该例解析React.Child.map() 二、React.Children.map...() 作用: https://zh-hans.reactjs.org/docs/react-api.html#reactchildren 源码: // React.Children.map(props.children...map()的过程中,每次递归都会用到traverseContext对象, 创建traverseContextPool对象池的目的,就是复用里面的对象, 以减少内存消耗,并且map()结束时, 将复用的对象初始化...: 核心递归函数,目的是展平嵌套数组 源码: // children, '', mapSingleChildIntoContext, traverseContext function traverseAllChildrenImpl...四、根据React.Children.map()的算法出一道面试题 数组扁平化处理: 实现一个flatten方法,使得输入一个数组,该数组里面的元素也可以是数组,该方法会输出一个扁平化的数组 // Example

1.1K30

关于前端面试你需要知道的知识点

中props.children和React.Children的区别 React中,当涉及组件嵌套父组件中使用props.children把所有子组件显示出来。...React Hooks 的限制主要有两条: 不要在循环、条件或嵌套函数中调用 Hook; React函数组件中调用 Hook。 那为什么会有这样的限制呢?...那为什么不要在循环、条件或嵌套函数中调用 Hook 呢?因为 Hooks 的设计是基于数组实现。调用时按顺序加入数组中,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误的 Hook。...提供合并多个reducer的函数,保证store的唯一性 bindActionCreators.js 可以让开发者不直接接触dispacth的前提下进行更改state的操作 applyMiddleware.js...(1)遍历数组map && forEach import React from 'react'; class App extends React.Component { render() {

5.4K30

React常见面试题

)一行代码进行复用,render props无法做到如此简单 嵌套过深:render props 虽然摆脱了组件多层嵌套的问题,但是转化为了函数回调的嵌 参考资料: React 中的 Render Props...如果一个函数,接受一个或多个函数作为参数或者返回一个函数,就可称之为高阶函数 特点: 是函数 参数是函数 or 返回是函数 eg: array 对象中的 map,filter,sort方法都是高阶函数...无需修改组件结构的情况下复用状态逻辑; 优势: 简洁:react hooks解决了hoc和render props的嵌套问题,更加简洁 (不使用class的情况下,使用state及react其他特性...【hook执行位置】不要在循环、条件 、嵌套中调有hook,必须始终react函数顶层使用Hook,这是因为react需要利用调用顺序来正确更新相应的状态,以及调用相应的钩子函数,否则会导致调用顺序不一致性...hooks(本质是一类特殊的函数,可以为函数式注入一些特殊的功能)的主要api: 基础Hook: useState : 状态钩子,为函数组件提供内部状态 useEffect :副作用钩子,提供了类似于componentDidMount

4.1K20

React 手写笔记

嵌套 将一个组件渲染到某一个节点里的时候,会将这个节点里原有内容覆盖 组件嵌套的方式就是将子组件写入到父组件的模板中去,且react没有Vue中的内容分发机制(slot),所以我们一个组件的模板中只能看到父子关系...Hooks React Hooks 是 React 16.7.0-alpha 版本推出的新特性, 有了React Hooks, react 函数组件中,也可以使用类组件(classes components...不要在循环,条件或嵌套函数中调用Hook。 不要从常规JavaScript函数中调用Hook。只React函数式组件调用Hooks。...其实FluxReact里的应用就类似于Vue中的Vuex的作用,但是Vue中,Vue是完整的mvvm框架,而Vuex只是一个全局的插件。...Reducer不是只有Redux里才有,之前学的数组方法reduce, 它的第一个参数就是一个reducer 纯函数函数式编程的概念,必须遵守以下一些约束。

4.8K20

前端一面高频react面试题(持续更新中)

React 提供了两个方法,在这些情况下非常有用:React.memo():这可以防止不必要地重新渲染函数组件PureComponent:这可以防止不必要地重新渲染类组件这两种方法都依赖于对传递给组件的...通过 shouldComponentUpdate方法中返回 false, React将让当前组件及其所有子组件保持与当前组件状态相同。传入 setstate函数的第二个参数的作用是什么?... EMAScript5语法规范中,关于作用域的常见问题如下。(1)map等方法的回调函数中,要绑定作用域this(通过bind方法)。...(1)当使用箭头函数作为map等方法的回调函数时,箭头函数作用域是当前组件的实例化对象(即箭头函数作用域是定义时的作用域),无须绑定作用域。(2)事件回调函数要绑定组件作用域。...缺点:无法 return 语句外访问数据、嵌套写法不够优雅(3)Hooks 官方解释∶Hook是 React 16.8 的新增特性。

1.8K20

React学习(三)-不可不知的JSX

上面使用的是两个函数组件,组件里面是可以嵌套另一组件的,并且属性值可以通过props拿到 也说明了,你是可以将任何东西作为子元素传递给自定义的组件的, 只要该组件渲染之前能够被转换成React理解的对象...必须在作用域内,JSX其实就是React.createElement函数的语法糖,React.createElement是更接近底层的API,所以React库也必须包含在JSX代码作用域内 引入React...对于数组对象,可以通过map方法进行输出,然而假如是对象的话,却是没有这个方法的 具体使用的是Object.keys(对象)这个方法,它会返回一个数组,并且将对象的属性名保存在一个数组中,如果是要获取对象的属性值...,则可以先转数组,然后使用数组的一些方法:例如map方法进行处理一下 var obj = { name: "川川", age: "你猜,小鲜肉一枚" } var getAttr = Object.keys...结语 本文主要讲述JSX中添加属性的命名方式应是camelCase驼峰式命名来定义属性的名称,JSX中的子元素可以是字符串,可以嵌套,以及js表达式,函数都可以作为子元素 并且React中组件的定义以及调用处

1.2K30

谈谈我这些年对前端框架的理解

对于视图的描述这件事 react 和 vue 用了不同的方案,react 是给 js 扩展了 jsx 的语法,由 babel 实现,可以描述视图的时候直接用 js 来写逻辑,没啥新语法。...而 react 的 jsx 本来就是和 js 同一个上下文,结合 typescript 就很自然。 所以 vue template 和 react jsx 各有优缺点。...有两种方案,一种是 map,一种是数组。 用 map 的话那么要 hooks api 要指定 key,按照 key 来存取 fiber 节点中的数据。...的对应元素中存放数据,值是缓存的函数计算的结果, state 变化后重新计算值 useCallback: fiber.memoriedState 的对应元素中存放数据,值是函数 state 变化后重新执行函数...不管形式怎么样,这些 hooks 的 api 的作用都是返回值的。

99410

浅谈React性能优化的方向

0️⃣ 不要在渲染函数都进行不必要的计算 比如不要在渲染函数(render)中进行数组排序、数据转换、订阅事件、创建事件处理器等等....渲染函数中不应该放置太多副作用 1️⃣ 减少不必要的嵌套 image.png 我们团队是重度的 styled-components 用户,其实大部分情况下我们都不需要这个玩意,比如纯静态的样式规则,...所以样式运行时性能方面大概可以总结为:CSS > 大部分CSS-in-js > inline style ---- 避免重新渲染 减少不必要的重新渲染也是 React 组件性能优化的重要方向....对于函数组件可以使用React.memo包装 另外这些措施也可以帮助你更容易地优化组件重新渲染: 0️⃣ 简化 props ① 如果一个组件的 props 太复杂一般意味着这个组件已经违背了‘单一职责’...总结一下使用 Context API 要遵循一下原则: 明确状态作用域, Context 只放置必要的,关键的,被大多数组件所共享的状态。

1.6K30

react面试题详解

HOC 是纯函数,没有副作用。...缺点:无法 return 语句外访问数据、嵌套写法不够优雅(3)Hooks 官方解释∶Hook是 React 16.8 的新增特性。...React具有浓重的函数式编程的思想。提到函数式编程就要提一个概念:纯函数。它有几个特点:给定相同的输入,总是返回相同的输出。过程没有副作用。不依赖外部状态。...this.props就是汲取了纯函数的思想。props的不可以变性就保证的相同的输入,页面显示的内容是一样的,并且不会产生副作用React中refs的作用是什么?有哪些应用场景?...> }}由于函数组件没有实例,因此不能在函数组件上直接使用 ref:function MyFunctionalComponent() { return ;}class Parent

1.3K10

谈谈我这些年对前端框架的理解

对于视图的描述这件事 react 和 vue 用了不同的方案,react 是给 js 扩展了 jsx 的语法,由 babel 实现,可以描述视图的时候直接用 js 来写逻辑,没啥新语法。...而 react 的 jsx 本来就是和 js 同一个上下文,结合 typescript 就很自然。 所以 vue template 和 react jsx 各有优缺点。...有两种方案,一种是 map,一种是数组。 用 map 的话那么要 hooks api 要指定 key,按照 key 来存取 fiber 节点中的数据。...的对应元素中存放数据,值是缓存的函数计算的结果, state 变化后重新计算值 useCallback: fiber.memoriedState 的对应元素中存放数据,值是函数 state 变化后重新执行函数...不管形式怎么样,这些 hooks 的 api 的作用都是返回值的。

89120
领券