React有哪些生命周期钩子函数?数据请求放在哪个钩子里?
tips
只有类组件有生命周期。函数组件是没有的,但是可以用hooks模拟。
总得来说:
- 挂载时调用 constructor,更新时不调用
- 更新时调用 shouldComponentUpdate 和 getSnapshotBeforeUpdate,挂载时不调用
- should... 在 render 前调用,getSnapshot... 在 render 后调用
- 请求放在 componentDidMount 里。
React如何实现组件间通信
- 父子组件通信:props + 函数
- 爷孙组件通信:两层父子通信,或者使用 Context.Provider 和 Context.Consumer
-
任意组件通信:其实就是状态管理了。
- Redux(全局状态管理)
- Mobx
-
Recoil(是一个局部状态管理)
如何理解Redux
- 文档第一句话:Redux 是一个状态管理库/状态容器。
-
把 Redux 的核心概念说一下:
- Store:存储状态的容器。使用Redux的程序第一步就是通过
createStore函数来创建一个store,store中包含了如何获取当前状态和修改状态的方法。
- Action = type + payload荷载 (荷载其实就是数据)。用来传递操作state的信息到store,以对象形式出现。
- Reducer:用来表示状态可以被执行哪些操作。会接受两个参数:previousState(老的状态数据)和action(在何种操作下),返回newState(返回新的状态数据)。
function reducer(previousState, action) {// 根据不同情况返回不同d的newState。// 默认情况返回的就是初始化的state。 return newState;}
- Dispatch 派发,是
store的一个方法。(不重要)发起状态改变的地方,接一个action。
- Middleware。(不重要)
- Store:存储状态的容器。使用Redux的程序第一步就是通过
-
ReactRedux 的核心概念说一下:
- connect()(Component)
- mapStateToProps
- mapDispatchToProps
- 常见的中间件 redux-thunk redux-promise
什么是高阶组件 HOC ?
参数是组件,返回值也是组件的函数。什么都能做,所以抽象问题就具体回答。
举例说明即可:
- React.forwardRef
- ReactRedux 的 connect
- ReactRouter 的 withRouter