React/Typescript 向函数添加承诺时出错?
React/Typescript error when adding promise to a function?
我正在使用 useWagmi 的以下函数将交易写入以太坊合约:https://wagmi.sh/docs/hooks/useContractWrite
const [{ data, error, loading }, write] = useContractWrite(
{
addressOrName: 'Address',
contractInterface: Interface,
},
'publicSaleMint',
{
args: [thirdHashRef.current],
}
)
效果很好。但是,我想 return 发送交易后的交易响应 - 我按照文档并在交易结束时添加了一个承诺:
const [{ data, error, loading }, write] = useContractWrite(
{
addressOrName: 'Address',
contractInterface: Interface,
},
'publicSaleMint',
{
args: [hashRef.current],
}
)=> Promise<{ data?: TransactionResponse, error?: Error }> **Added this**
我在这里调用函数:
async function handleSubmit() {
await cleanEntries()
.then(() => { write() })
.then((data) => { console.log(data.TransactionResponse) })
}
但是,现在我收到以下错误:
Operator '<' cannot be applied to types 'PromiseConstructor' and '{ data: any; error: ErrorConstructor; }'.ts(2365)
Operator '>' cannot be applied to types 'boolean' and '() => Promise<void>'.ts(2365)
我该如何解决这个问题?
您提到的文档是这样说的:
Return Values
write
(
config: {
args: any | any[]
overrides?: Overrides
} = {},
) => Promise<{ data?: TransactionResponse; error?: Error }>
该文档并没有告诉您编写该代码,它只是向您展示了 return 值的参数和类型。这是函数声明的片段,其中 =>
之后的部分是函数的 return 类型。这是库作者自己写的,不用加
因此 useContractWrite
编写的 write
函数 return 已经 return 是一个承诺,您所要做的就是使用它。您不需要添加任何特殊语法。
const [{ data, error, loading }, write] = useContractWrite(/* ... */)
write().then(() => console.log('promise resolved'))
我正在使用 useWagmi 的以下函数将交易写入以太坊合约:https://wagmi.sh/docs/hooks/useContractWrite
const [{ data, error, loading }, write] = useContractWrite(
{
addressOrName: 'Address',
contractInterface: Interface,
},
'publicSaleMint',
{
args: [thirdHashRef.current],
}
)
效果很好。但是,我想 return 发送交易后的交易响应 - 我按照文档并在交易结束时添加了一个承诺:
const [{ data, error, loading }, write] = useContractWrite(
{
addressOrName: 'Address',
contractInterface: Interface,
},
'publicSaleMint',
{
args: [hashRef.current],
}
)=> Promise<{ data?: TransactionResponse, error?: Error }> **Added this**
我在这里调用函数:
async function handleSubmit() {
await cleanEntries()
.then(() => { write() })
.then((data) => { console.log(data.TransactionResponse) })
}
但是,现在我收到以下错误:
Operator '<' cannot be applied to types 'PromiseConstructor' and '{ data: any; error: ErrorConstructor; }'.ts(2365)
Operator '>' cannot be applied to types 'boolean' and '() => Promise<void>'.ts(2365)
我该如何解决这个问题?
您提到的文档是这样说的:
Return Values
write
( config: { args: any | any[] overrides?: Overrides } = {}, ) => Promise<{ data?: TransactionResponse; error?: Error }>
该文档并没有告诉您编写该代码,它只是向您展示了 return 值的参数和类型。这是函数声明的片段,其中 =>
之后的部分是函数的 return 类型。这是库作者自己写的,不用加
因此 useContractWrite
编写的 write
函数 return 已经 return 是一个承诺,您所要做的就是使用它。您不需要添加任何特殊语法。
const [{ data, error, loading }, write] = useContractWrite(/* ... */)
write().then(() => console.log('promise resolved'))