ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 基础 [**什么是高阶组件?**]() `接受一个组件并返回一个新组件的函数` 作用 * 渲染劫持 * 代码重用 * props 的处理 * start 的的抽象和操作 [**什么是受控组件和非受控组件?**]() * 受控组件 `能够控制状态的组件就叫受控组件 就是每次改变状态 都有相关的处理函数` * 非受控组件 `内部储存状态的组件当需要时可以用ref查询DOM上的值` [** React 组件通信方式?**]() ## Hooks [**常用的hooks及作用**]() * [ ] useStart * 作用 `初始化状态` * [ ] useEffect * 作用 `副作用 接受两个参数第一个参数是函数 第二个是数组依赖项` * [ ] useLayoutEffect * 作用 `Dom操作的副作用,在DOM更新后执行` * [ ] userMemo * 作用 `返回缓存值可以是任何。对象 函数都可以,只有依赖项改变时才会执行` * 应用场景 ~~~jsx 1. 复杂计算逻辑优化 2. 父子组件重新渲染问题优化 ~~~ * [ ] useCallback * 作用 `返回一个缓存函数,只有依赖项改变时才会执行` * 应用场景 ~~~jsx 1. 父子组件重新渲染问题优化 ~~~ [**useEffect和useLayoutEffect有什么区别**]() * 相同点 1. 第一个参数,接收一个函数作为参数 2. 第二个参数,接收【依赖列表】,只有依赖更新时,才会执行函数 3. 返回一个函数,先执行返回函数,再执行参数函数(所以说执行过程的流程是一样的) * 不同点 1. 执行时机不同。 `useLayoutEffect在DOM更新之后执行;useEffect在render渲染结束后执行。执行示例代码会发现useLayoutEffect永远比useEffect先执行,这是因为DOM更新之后,渲染才结束或者渲染还会结束` [**userMemo和useCallback有什么区别**]() * 相同点 1. 使用方法相同,第一个参数是函数,第一个是依赖项 * 不同点 1. useMemo会直接调用传过来的函数并且返回一个值,useCallback 则不会 [**说一下 react-fiber**]()