目前我有这段代码将票证更新功能放在使用效果中。 问题是,每当我更改使用效果挂钩的值时,它似乎都会触发 on(ticket.updated) 例如,我将表单值更改 3 次,on(ticket.updated) 内部的函数也被调用 3 次
现在我尝试在使用效果之外调用该函数,但这种方式使用空值会导致更多错误。
所以我想知道在 React Zendesk 应用程序中调用的正确位置在哪里
React.useEffect(async () => {
console.log("FORM VALUE WAS CHANGED", formValue);
zafClient.on('ticket.updated', function (e) {
console.log("executed", formValue);
}
}, [formValue])
这是我用来从应用程序内部检查当前 formValue 的代码 执行的次数与表单值更改的次数一样多
您考虑过使用
useRef()
吗?
useRef()
可用于创建 zafClient 的新实例并在多个渲染周期中维护对象的状态。
您可能想尝试一下:
const zafClientRef = useRef();
useEffect(() => {
zafClientRef.current = zafClient;
zafClientRef.current.on('ticket.updated', function (e) {
console.log("executed", formValue);
});
return () => {
zafClientRef.current.off('ticket.updated');
};
}, []);