稍后如何对存储在 useState 中的对象使用方法?
How to later use a method on a object that is stored in useState?
我有一个像这样的自定义挂钩:
export const useSomeHook = () => {
const [provider, setProvider] = useState(null);
useEffect(() => {
// init stuff using third party library
setProvider(...);
}, []);
return [provider];
}
在应用程序中,我在某处以只读模式使用,但是 provider 也有我想使用的方法,如下所示:
provider.once(txHash, (transaction) => {
// Emitted when the transaction has been mined
})
问题出在useState,它创建了一个只读对象,所以我不能使用提供者的方法。我不能只传入数据来在钩子中初始化这个函数,因为 txHash 是随着用户交互而变化的东西,并且提供者连接到 websocket(在初始化期间由第三方库启动。)
我想如果你使用 useRef 而不是 useState 应该可以工作
export const useSomeHook = () => {
const providerRef = useRef(null);
useEffect(() => {
// init stuff using third party library
providerRef.current = ...
}, []);
// you don't need to put it in an array since it's only one item
return providerRef.current;
}
我有一个像这样的自定义挂钩:
export const useSomeHook = () => {
const [provider, setProvider] = useState(null);
useEffect(() => {
// init stuff using third party library
setProvider(...);
}, []);
return [provider];
}
在应用程序中,我在某处以只读模式使用,但是 provider 也有我想使用的方法,如下所示:
provider.once(txHash, (transaction) => {
// Emitted when the transaction has been mined
})
问题出在useState,它创建了一个只读对象,所以我不能使用提供者的方法。我不能只传入数据来在钩子中初始化这个函数,因为 txHash 是随着用户交互而变化的东西,并且提供者连接到 websocket(在初始化期间由第三方库启动。)
我想如果你使用 useRef 而不是 useState 应该可以工作
export const useSomeHook = () => {
const providerRef = useRef(null);
useEffect(() => {
// init stuff using third party library
providerRef.current = ...
}, []);
// you don't need to put it in an array since it's only one item
return providerRef.current;
}