常见基础问题(React篇二)

103 阅读2分钟

React有哪些生命周期钩子函数?数据请求放在哪个钩子里?

tips

只有类组件有生命周期。函数组件是没有的,但是可以用hooks模拟。

image.png

总得来说:

  1. 挂载时调用 constructor,更新时不调用
  1. 更新时调用 shouldComponentUpdate 和 getSnapshotBeforeUpdate,挂载时不调用
  1. should... 在 render 前调用,getSnapshot... 在 render 后调用
  1. 请求放在 componentDidMount 里。

React如何实现组件间通信

  1. 父子组件通信:props + 函数
  1. 爷孙组件通信:两层父子通信,或者使用 Context.Provider 和 Context.Consumer
  1. 任意组件通信:其实就是状态管理了。

    1. Redux(全局状态管理)
    1. Mobx
    1. Recoil(是一个局部状态管理)


如何理解Redux

  1. 文档第一句话:Redux 是一个状态管理库/状态容器。
  1. 把 Redux 的核心概念说一下:

    1. Store:存储状态的容器。使用Redux的程序第一步就是通过createStore函数来创建一个store,store中包含了如何获取当前状态和修改状态的方法。
    1. Action = type + payload荷载 (荷载其实就是数据)。用来传递操作state的信息到store,以对象形式出现。
    1. Reducer:用来表示状态可以被执行哪些操作。会接受两个参数:previousState(老的状态数据)和action(在何种操作下),返回newState(返回新的状态数据)。function reducer(previousState, action) {// 根据不同情况返回不同d的newState。// 默认情况返回的就是初始化的state。 return newState;}
    1. Dispatch 派发,是store的一个方法。(不重要)发起状态改变的地方,接一个action。
    1. Middleware。(不重要)
  1. ReactRedux 的核心概念说一下:

    1. connect()(Component)
    1. mapStateToProps
    1. mapDispatchToProps
  1. 常见的中间件 redux-thunk redux-promise

什么是高阶组件 HOC ?

参数是组件,返回值也是组件的函数。什么都能做,所以抽象问题就具体回答。

举例说明即可:

  1. React.forwardRef
  1. ReactRedux 的 connect
  1. ReactRouter 的 withRouter

参考文档