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

40道ReactJS 面试问题及答案

ReactJS 是一个功能强大的 JavaScript 库,用于使用构建块创建交互式用户界面。 ReactJS 的运行原理是声明式和基于组件的方法。...它允许组件根据 props 的变化更新其内部状态。 render:此方法负责根据当前状态和属性渲染组件的 UI。 componentDidMount:该方法在组件第一次渲染后调用。...它提供了许多与 DOM 交互的方法,例如创建元素、更新属性和删除元素。 React DOM 与 React 结合使用来构建用户界面。...c) 优化捆绑包大小:密切关注捆绑包大小,并通过删除使用的依赖项、使用树摇动和最小化大型库的使用来优化它。...避免直接状态变更:更新状态时,始终使用 React 提供的函数(例如,类组件中的 setState、功能组件中的 useState hook)以避免直接变更状态。

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

React内部让人迷惑的性能优化策略

他指:当useState更新的state与当前state一样时(使用Object.is比较),React不会render该组件的「子孙组件」。...实际的性能优化策略 React的工作流程可以简单概括为: 交互(比如点击事件、useEffect)触发更新 组件树render 刚才讲的bailout发生在步骤2:组件树开始render后,命中了bailout...实际还有一种更「前置」的优化策略:当步骤1触发更新时,发现state未变化,则根本不会继续步骤2。...总结 综上所述,我们的Demo是混合了这两种优化策略后的结果: App render 0(命中策略) child render App render 1(命中策略) child render App...file=/src/App.js [2]useState文档: https://reactjs.org/docs/hooks-reference.html#bailing-out-of-a-state-update

75020

React: hooks 该怎么优雅的获取数据

当然你需要先了解一下 react hooks 的新特性 github.com/reactjs/rfc… reactjs.org/docs/hooks-… 使用 hook 获取数据 这里有一篇讲解在 react...中怎么去获取数据 react 怎么优雅的获取数据 下面看看怎么使用 hook 来获取 1、useState的使用 import React, { useState } from 'react'; function...因为当我们在获取数据后存储数据到 state 中的时候,我们的组件会随之更新,然后 effect 会再次运行一次。然后我们会又获取一次 data。...useEffect(() => { fetchData(); }, []); // 这里的第二个参数: 是 hooks 来观测数值的变化 // 这里添加 [],当我们的组件更新的时候回去观测...Fragment> ); } export default App; 复制代码 好了现在我们可以优雅地使用 hooks 去获取我们的数据了 参考 juejin.im/post/684490… reactjs.org

2.4K30

如何设计一个好用的 React Image 组件?

预先定义好相关 API: 属性 说明 类型 默认值 src 图片链接 string / string[] - loader 可选,加载过程占位元素 ReactNode null unloader 可选,...ReactNode null loadImg 可选,图片加载方法,返回一个 Promise (src:string)=>Promise imgPromise 当然,除了以上 API,还有标签原生属性...react-image-2 结语 值得注意的是,本文遵循 react-image 大体思路,但部分内容暂实现(所以代码可读性要好一点)。...react-use [4] tapable: https://github.com/webpack/tapable [5] 用于数据获取的 Suspense(试验阶段): https://zh-hans.reactjs.org.../docs/concurrent-mode-suspense.html [6] 错误边界(Error Boundaries): https://zh-hans.reactjs.org/docs/error-boundaries.html

1.4K20

如何设计一个好用的 React Image 组件?

预先定义好相关 API: 属性 说明 类型 默认值 src 图片链接 string / string[] - loader 可选,加载过程占位元素 ReactNode null unloader 可选,...ReactNode null loadImg 可选,图片加载方法,返回一个 Promise (src:string)=>Promise imgPromise 当然,除了以上 API,还有标签原生属性...return unloader; return null; }; 测试效果如下: react-image-2 结语 值得注意的是,本文遵循 react-image 大体思路,但部分内容暂实现...react-use [4] tapable: https://github.com/webpack/tapable [5] 用于数据获取的 Suspense(试验阶段): https://zh-hans.reactjs.org.../docs/concurrent-mode-suspense.html [6] 错误边界(Error Boundaries): https://zh-hans.reactjs.org/docs/error-boundaries.html

1.9K20

React 性能优化完全指南,将自己这几年的心血总结成这篇!

由于调和阶段的「Diff 过程」和提交阶段的「应用更新方案到 DOM」都属于 React 的内部实现,开发者能提供的优化能力有限,本文仅有一条优化技巧(列表项使用 key 属性[2])与它们有关。...当时 Flux 架构就使用的模块变量来维护 State,并在状态更新时直接修改该模块变量的属性值,而不是使用展开语法[6]生成新的对象引用。...当大对象中某个「子组件使用的属性」发生了更新,子组件也会触发 Render 过程。...列表项使用 key 属性 当渲染列表项时,如果不给组件设置不相等的属性 key,就会收到如下报警。 ? 相信很多开发者已经见过该报警成百上千次了,那 key 属性到底在优化了什么呢?举个 ?...那么使用 key 属性就不只节省了 DOM 更新,还避免了组件的 Render 过程。 React 官方推荐[15]将每项数据的 ID 作为组件的 key,以达到上述的优化目的。

6.8K30

快速上手三大基础 React Hooks

类似但又有所区别 useContext 监听 provider 更新变化 useState useState 允许我们在函数式组件中维护 state,传统的做法需要使用类组件。...changeUserName('') 改变 state 也不需要书写 setState 方法 文档说明:https://zh-hans.reactjs.org/docs/hooks-state.html...第一次渲染和每次更新之后都会触发这个钩子,如果需要手动修改自定义触发规则 见文档:https://zh-hans.reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects...useEffect 直接 return 一个函数即可: 20190313113627.png 返回的函数是选填的,可以使用也可以不使用: 20190313113753.png 文档:https://zh-hans.reactjs.org...上手就是这样,函数式组件和 Hooks 配合使用真的非常爽⛄ 参考: https://codeburst.io/quick-intro-to-react-hooks-6dd8ecb898ed https://reactjs.org

1.5K40

React 函数式组件性能优化指南

使用的 React 优化 API 主要是:shouldComponentUpdate和 PureComponent,这两个 API 所提供的解决思路都是为了减少重新 render 的次数,主要是减少父组件更新而子组件也更新的情况...,虽然也可以在 state 更新的时候阻止当前组件渲染,如果要这么做的话,证明你这个属性不适合作为 state,而应该作为静态属性或者放在 class 外面作为一个简单的变量 。...小结 useMemo 的使用场景主要是用来缓存计算量比较大的函数结果,可以避免不必要的重复计算,有过 vue 的使用经历同学可能会觉得跟 Vue 里面的计算属性有异曲同工的作用。...一个爱思考的前端 er,想了解关于更多的前端相关的,请关注我的公号:「前端桃园」,如果想加入交流群关注公众号后回复「微信」拉你进群 参考资料 [1] React 官网: https://zh-hans.reactjs.org...#shouldcomponentupdate [3] 官网: https://zh-hans.reactjs.org/docs/hooks-reference.html#usememo [4] 21 个

2.3K10

React 也能 “用上” computed 属性

React 中的计算属性 说到 React 之前,我们先看下 Vue,在 Vue 中,计算属性主要有以下两点特性: 计算属性以声明的方式创建依赖关系,依赖的 data 或 props 变更会触发重新计算并自动更新...firstName 或 lastName 变更之后,变量 fullName 都会自动更新。其实现原理是 props 以及 state 的变化会导致 render 函数调用,进而重新计算衍生值。...官方对 useMemo 的介绍在 这里(https://zh-hans.reactjs.org/docs/hooks-reference.html#usememo),详情请移步查看。...} from 'react'; function Example(props) { const [firstName, setFirstName] = useState(''); const...[lastName, setLastName] = useState(''); // 使用 useMemo 函数缓存计算过程 const renderFullName = useMemo(()

2.2K20

React Hooks-useTypescript!

useState useState允许我们在函数组件中使用类似类组件中 this.state的能力。这个hook会返回一个数组,包含当前状态值跟一个更新状态的函数。...这个set state函数是一个纯函数,指定了如何更新状态,并且总是会返回一个相同类型的值。 useState可以通过我们提供给函数的值的类型推断出初始值跟返回值的类型。...返回的对象会存在于组件的整个生命周期,ref 的值可以通过把它设置到一个React元素的 ref属性上来更新。...; 组建的第二个ref 参数(FancyInput(props, **ref**)) 只在我们使用[forwardRef](https://reactjs.org/docs/...forwarding-refs.html)[ 函数]时存在,(https://reactjs.org/docs/forwarding-refs.html),使得把ref传递给子组件更加容易。

4.1K40

函数式编程看React Hooks(一)简单React Hooks实现

它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。...以下 三点是 react 官网所提到的 hooks 的动机 https://zh-hans.reactjs.org/docs/hooks-intro.html#motivation 代码重用:在hooks...React Hooks 还未出现的时候,我们的组件大多用来直接渲染,不含有状态存储,Function组件没有state,所以也叫SFC(stateless functional component),现在更新叫做...(为了尽可能简化,我进行了改编) useState let _state; function useState(initialState) { _state = _state || initialState...核心逻辑就是 第一次声明的时候将 useState, useEffect, useMemo, useCallback 等钩子函数的状态依次存入数组。 更新的时候,将前一次的函数状态值依次取出。

1.8K20

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

如何在 ReactJS 的 Props上应用验证? 当应用程序在开发模式下运行时,React 将自动检查咱们在组件上设置的所有 props,以确保它们具有正确的数据类型。...React-intl是雅虎的语言国际化开源项目FormatJS的一部分,通过其提供的组件和API可以与ReactJS绑定。...即:Hooks 组件(使用了Hooks的函数组件)有生命周期,而函数组件(使用Hooks的函数组件)是没有生命周期的。...const [num, UpdateNum] = useState(0) getDerivedStateFromProps:一般情况下,我们不需要使用它,可以在渲染过程中更新 state,以达到实现 getDerivedStateFromProps...在父组件中用useState声明数据 const [ data, setData ] = useState(false) 把更新数据的函数传递给子组件 <Child setData={setData

5.4K30
领券