面试 React 框架八股文十问十答第二期

面试 React 框架八股文十问十答第二期

作者:程序员小白条个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)redux 的工作流程?

  • 触发一个 action,通过调用 store.dispatch(action) 发起。
  • Redux store 收到 action 后,通过 reducer 函数处理,生成新的 state。
  • 订阅了 store 的组件会收到新的 state,从而更新视图。

2)react-redux 是如何工作的?

  • react-redux 提供了 Provider 组件,它将 Redux store 传递给应用的所有组件。
  • 使用 connect 函数将 React 组件连接到 Redux store,该函数接受两个参数:mapStateToPropsmapDispatchToProps,分别用于将 state 和 action 映射到组件的 props。
  • 连接后的组件可以通过 props 直接访问 Redux store 的 state 和 dispatch 函数。

3)redux 中如何进行异步操作?

  • 可以使用中间件来处理异步操作,最常见的是 redux-thunkredux-saga 等。
  • 使用 redux-thunk,action 可以是一个函数而不仅仅是一个对象。这个函数接受 dispatchgetState 作为参数,允许进行异步操作后再分发其他 action。

4)redux 异步中间件 redux-thunk 的优劣?

  • 优点:
    • 简单易用,容易理解和上手。
    • 良好的社区支持,广泛应用于许多项目。
  • 缺点:
    • 对于复杂的异步流程,可能会导致 action 创建函数嵌套过深,使代码难以维护。
    • 可能不如其他中间件处理一些复杂的异步场景。

5)合成事件是什么?

  • 在 React 中,合成事件是指由 React 负责包装浏览器原生事件对象而创建的事件对象。React 在不同浏览器之间提供了一致的事件处理方式。
  • 这样的设计使得 React 能够屏蔽底层浏览器的差异,提供一致性的事件接口,方便开发者编写跨浏览器的代码。React 的事件系统支持冒泡、捕获、委托等特性,同时也提供了合成事件对象的属性和方法。

6)React Hooks 原理?

  • Hooks 是 React 16.8 引入的特性,允许函数组件内部使用 state、生命周期等 React 特性。它们是函数,可让你在不编写 class 的情况下使用 state 以及其他 React 特性。
  • Hooks 本质上是一些 JavaScript 函数,通过调用 React 提供的特定函数(如 useState, useEffect, useContext 等)来在函数组件中使用 React 的功能。
  • 这些 Hook 函数通过使用 React 内部的特殊机制来跟踪组件的状态和生命周期,并确保在组件重新渲染时状态保持不变。

7)为什么 ReactHooks 中不能有条件判断?

  • Hooks 需要在每次渲染中按照相同的顺序被调用。如果在条件语句中使用 Hook,会导致调用顺序发生变化,违反了 React Hooks 的规则。
  • 这会导致 React 在重新渲染时无法正确地追踪和处理状态的变化,因此条件判断内部使用 Hook 会引发错误。

8)用过哪些 Hook?

  • useState: 用于在函数组件中添加状态。
  • useEffect: 处理副作用,如数据获取、订阅、手动操作 DOM 等。
  • useContext: 获取 React 上下文。
  • useReducer: 可选的 state 管理方案,用于处理复杂的状态逻辑。
  • useCallbackuseMemo: 优化性能,避免不必要的重新渲染。

9)Class 组件 VS Hook

  • Class 组件:使用传统的生命周期方法,包含较多的模板代码和状态管理逻辑,可读性较差。
  • Hook:函数式组件更简洁、易读,通过提供各种 Hook,使得组件逻辑更为清晰,减少样板代码,更方便复用和测试。

10)自定义过哪些 Hook?

  • 自定义 Hook 是指在函数中封装并抽象出可复用的逻辑。我可以帮你列举一些常见的自定义 Hook,比如处理表单逻辑、订阅事件、管理定时器等。

相关推荐

  1. 面试 React 框架八股文第二

    2024-01-09 12:34:02       42 阅读
  2. 面试 React 框架八股文第一

    2024-01-09 12:34:02       40 阅读
  3. 面试 Vue 框架八股文第二

    2024-01-09 12:34:02       43 阅读
  4. 面试 HTML 框架八股文第二

    2024-01-09 12:34:02       37 阅读
  5. 面试 CSS 框架八股文第二

    2024-01-09 12:34:02       39 阅读
  6. 面试 Vue 框架八股文第一

    2024-01-09 12:34:02       44 阅读
  7. 面试 HTML 框架八股文第一

    2024-01-09 12:34:02       44 阅读
  8. 面试 CSS 框架八股文第一

    2024-01-09 12:34:02       42 阅读
  9. 面试浏览器框架八股文第一

    2024-01-09 12:34:02       54 阅读
  10. 面试 React 框架八股文

    2024-01-09 12:34:02       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-09 12:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-09 12:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-09 12:34:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-09 12:34:02       20 阅读

热门阅读

  1. 用gpt写的登录页面

    2024-01-09 12:34:02       29 阅读
  2. C++ 数据结构

    2024-01-09 12:34:02       28 阅读
  3. 若依 模态框调整

    2024-01-09 12:34:02       32 阅读
  4. Python Unicode 系统

    2024-01-09 12:34:02       34 阅读
  5. 算法每日一题:回旋镖的数量 | 坐标距离 | 哈希

    2024-01-09 12:34:02       36 阅读
  6. 网络安全之文件上传

    2024-01-09 12:34:02       34 阅读
  7. 展开运算符(Spread Operator)

    2024-01-09 12:34:02       34 阅读
  8. 在Python中创建一个动漫风格的皮卡丘

    2024-01-09 12:34:02       36 阅读
  9. NumPy 高级教程——GPU 加速

    2024-01-09 12:34:02       37 阅读
  10. 80. 删除有序数组中的重复项 II

    2024-01-09 12:34:02       33 阅读