创建永不重建的自定义钩子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建永不重建的自定义钩子相关的知识,希望对你有一定的参考价值。

我正在使用没有状态的自定义钩子,并希望“持久”使用该钩子。

该挂钩称为useMessage(),仅应在第一个渲染周期中重建,因为我在那里没有使用任何状态。

我想要全局钩子redux钩子useDispatch()

怎么可能?

编辑:

我只想拥有1个参考文献/一记辛格尔顿,以免一直被重新呈现!有什么办法可以记住这个钩子吗?我的目标是我能够在例如useEffect(),这绝不会导致useEffect()的重新运行。就像useDispatch / useRef / ...

答案

我不确定这是否是您的意思-但请尝试以下方法:

const [myValue] = useState(() => myInitialValue);

useState接受回调函数作为参数,该函数仅在组件的首次渲染时执行。对于所有将来的渲染,它将返回从函数返回的第一个值。

另一答案

因为您只想在第一次渲染时才调用useMessage(),并且像useDispatch一样直接将其编写就可以了...


const MyFun = () => {
     const messageUsage = useMessage() ;
     const data = ...Some data... ;
     messageUsage(data) 
}

以上是关于创建永不重建的自定义钩子的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个接收依赖项的自定义钩子?

永不过时的自定义AlertView

为啥 jest 不能为我正在测试的自定义 React 钩子提供 useTranslation 钩子?

Prestashop 1.7 中的自定义钩子

如何使用 useTheme() 钩子使用我的自定义主题?

带有圆角而不是 100% 屏幕宽度的自定义片段对话框