FAQ?
什么是 React?
React 是一种用于构建用户界面的 JavaScript 库。它由 Facebook 开发,可以用于构建单页应用程序和复杂的 UI。
什么是 JSX?
JSX 是一种 JavaScript 语法扩展,允许我们在 JavaScript 中编写类似 HTML 的代码。JSX 使得编写 React 组件的代码更加简洁、易读,并且易于维护。
什么是组件?
在 React 中,组件是可以复用的 UI 模块,它们可以接收输入并返回输出。组件可以分为函数组件和类组件。
React 中如何处理受控组件和非受控组件?
受控组件是指由 React 控制的表单元素,它们的值始终由 React 状态管理。非受控组件是指没有被 React 控制的表单元素。在 React 中,我们可以使用 ref 来获取非受控组件的值。
什么是 React Hooks?
React Hooks 是一种在函数组件中使用状态和副作用的方法。它们可以帮助我们避免使用类组件和共享状态的问题。
React 中如何处理组件之间的通信?
在 React 中,我们可以使用 props 和 state 来处理组件之间的通信。另外,我们还可以使用 Context 或 Redux 管理应用程序状态。
什么是高阶组件?
高阶组件是一种接收组件并返回新组件的函数。它们可用于在不重复组件代码的情况下共享行为和状态,并且可以作为 React 中代码重用和抽象的一种方式。
什么是异步组件?
异步组件是指在需要时,动态地加载组件。在 React 中,我们可以使用 React.lazy()
和 Suspense
API 来实现异步组件加载。
什么是性能优化在React中
性能优化是指确保应用程序在处理数据时能够快速响应。在 React 中,优化性能可以通过以下方式实现:
- 减少不必要的渲染, React.memo, shouldComponentUpdate 方法
- 使用分页和虚拟滚动以延迟元素的渲染
- 确保组件使用 keys 以便 React 将其更新
- 避免不必要的重复计算和循环操作
- 在组件卸载时清理不再需要的资源
什么是 React 中的渲染属性?
渲染属性是指在 React 中允许通过属性将一个或多个组件作为其子元素的方法。通过使用渲染属性,我们可以更灵活地定义组件并传递数据。
React 中的合成事件是什么?
合成事件是 React 提供的一种优化后的事件系统,它处理了跨浏览器兼容性问题,通过事件委托实现高效事件处理,而且能够避免浏览器默认行为。在 React 中,我们可以通过 SyntheticEvent
来访问合成事件的属性。
在 React 中如何进行单元测试?
在 React 中,我们可以使用 Jest 和 Enzyme 进行单元测试。我们可 以测试组件的渲染和行为,确保组件响应用户的交互。单元测试有助于确保组件的稳定性和可维护性,并帮助我们验证组件是否按预期运行。
什么是渲染道具/children?
在 React 中,每个组件都有一个 props
对象作为输入,可以通过该对象向其传递数据。在某些情况下,我们还可以使用 children
属性,该属性可以让我们向组件传递的内容作为一个或多个子元素。这种技术可以用于可复用的组件,例如 modal 组件、提示组件等
angularJs和React区别
React 对比 Angular 是思想上的转变,它也并不是一个库,是一种开发理念,组件化,分治的管理,数据与 view 的一体化。它只有一个中心,发出状态,渲染 view,对于虚拟 dom 它并没有提高渲染页面的性能,它提供更多的是利用 jsx 便捷生成 dom 元素,利用组件概念进行分治管理页面每个部分(例如 header section footer slider)
redux中间件
中间件提供第三方插件的模式,自定义拦截 action -> reducer 的过程。变为action -> middlewares -> reducer 。这种机制可以让我们改变数据流,实现如异步 action ,action 过滤,日志输出,异常报告等功能。常见的中间件: redux-logger:提供日志输出;redux-thunk:处理异步操作;redux-promise:处理异步操作;actionCreator 的返回值是 promise
redux有什么缺点
- 状态管理可能过度中央化:Redux 鼓励将应用中的所有状态都存储在单一的状态树中。这可能会导致状态管理过度中央化,使得修改状态变得更加困难,同时也可能会增加组件之间的耦合度。
- 繁琐的模板代码:Redux 需要编写许多模板代码,包括定义 Action 类型、编写 Action 创建函数、编写 Reducer 等。这可能会增加开发人员的工作量,尤其是对于较小的项目来说,这些额外的代码可能会显得冗余。
- 可能会产生性能问题:由于 Redux 中的所有状态都存储在单一的状态树中,因此在某些情况下,组件可能会在不必要的情况下重新渲染。这可能会对应用的性能产生负面影响。
- 学习曲线陡峭:Redux 使用了许多概念和抽象概念,包括 Action、Reducer、Store、Middleware 等。这些概念可能需要一些时间来理解和学习。
- 可能会导致重复的网络请求:由于 Redux 中的所有状态都存储在单一的状态树中,因此在某些情况下,多个组件可能会对同一个状态进行修改。如果这个状态是异步请求的结果,可能会导致多次发送相同的网络请求,浪费带宽和时间。
总之,Redux 在技术层面上存在一些缺点,使用时需要权衡其优点和缺点,并根据具体情况来选择是否使用它。