这是我的钩子。
export function useContractFactory() {
const { provider }: any = useWallet();
return useCallback(
(address: string, abi: any) => {
return new EthersContract(address, abi, provider);
},
[provider],
);
}
export function useTokenActions() {
const createContract = useContractFactory();
const isERC20 = useCallback(async (address: string) => {
const contract = createContract(address, erc20TokenABI);
return isTokenERC20(contract);
}, []);
return {
isERC20
}
}
如您所见,createContract
是一个 callback
。现在,TypeScript 和 ESLint 编译时出现警告。
React Hook useCallback 缺少依赖项:'createContract'。 要么包含它要么删除依赖数组
我是否应该指定 createContract
作为 isERC20
回调的依赖项?或者根本不需要callback
?你怎么看?
答案 0 :(得分:1)
我认为您应该将 createContract
添加到 dep 数组。
基于此React Documentation
useCallback 将返回一个记忆化的回调版本,该版本仅在依赖项之一发生更改时才会更改
不改变没关系但回调本身会考虑