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

时间:2020-04-17 11:14:17

标签: reactjs react-hooks

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

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

我想使用全局钩子redux钩子useDispatch()

那怎么可能?

编辑:

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

3 个答案:

答案 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)。这将使自定义钩子保持简单,并且只会重新运行一小部分。