热重装可以很好地用于类组件,但是对于带有钩子的功能组件,例如useState
,热重装可以重置其值。
答案 0 :(得分:1)
挂钩依赖于调用顺序。
https://reactjs.org/docs/hooks-faq.html
每个组件都有一个内部的“内存单元”列表。它们只是JavaScript对象,我们可以在其中放置一些数据。当您调用类似于useState()的Hook时,它将读取当前单元格(或在第一个渲染期间将其初始化),然后将指针移至下一个单元格。这就是多个useState()调用的方式分别获得独立的本地状态的方式。
来自https://github.com/gaearon/react-hot-loader
获得支持
如果需要,挂钩将在HMR上自动更新。只有一个条件-非零依赖性列表。
❄️ useState(initialState); // will never updated (preserve state)
❄️ useEffect(effect); // no need to update, updated on every render
❄️ useEffect(effect, []); // "on mount" hook. "Not changing the past"
? useEffect(effect, [anyDep]); // would be updated
? useEffect(effect, ["hot"]); // the simplest way to make hook reloadable
要禁用挂钩重装-设置配置选项:
import { setConfig } from 'react-hot-loader';
setConfig({
reloadHooks: false,
});