我正在使用没有状态的自定义钩子,并希望“持久”使用该钩子。
该钩子称为useMessage()
,应该只在第一个渲染周期中重建,因为我在那里没有使用任何状态。
我想使用全局钩子redux钩子useDispatch()
。
那怎么可能?
编辑:
我只想拥有1个参考资料/一个勾号,以免一直被渲染! 有什么办法可以记住这个钩子吗?我的目标是我能够在例如useEffect(),这绝不会导致useEffect()的重新运行。就像useDispatch / useRef / ...
答案 0 :(得分:0)
我不确定这是否是您的意思-但请尝试以下操作:
input = "{\"Parameters\" : "{\"inputCommand\": \"commandToRun\"}}"
useState接受回调函数作为参数,该函数仅在组件的首次渲染时执行。对于所有将来的渲染,它将返回从函数返回的第一个值。
答案 1 :(得分:0)
因为您希望useMessage()
仅在第一次渲染时被调用,并且像useDispatch
那样工作,所以只需按原样编写即可...
const MyFun = () => {
const messageUsage = useMessage() ;
const data = ...Some data... ;
messageUsage(data)
}
答案 2 :(得分:0)
答案是——你不能。如果包含它的组件再次运行,自定义钩子将始终重新运行。
我所期望的:只需返回一个包含数组中依赖项的记忆值 (useMemo
)。这将使自定义钩子保持简单,并且只会重新运行一小部分。