【问题标题】:Is there a way of passing state information from react hooks into nested functions in react?有没有办法将状态信息从反应钩子传递到反应中的嵌套函数?
【发布时间】:2023-03-02 23:24:02
【问题描述】:

这是我的第一个单独的 react 项目,如果我错过了任何明显的地方,敬请原谅。我正在尝试找到一种将 {account} 和 {value} 放入 handlePledge 的方法。显然你不能直接在嵌套函数中使用它们。我尝试了不同的方法,例如将 {account} 和 {value} 作为参数传递(即 handlePledge({account}, {value})),但没有运气。

function App() {
  const [account, setAccount] = useState();
  const [button, setButton] = useState('Enable Ethereum');
  const [value, setValue] = useState(1);


  const handlePledge = async (e) => {
    e.preventDefault();
    const gas = await SixtySixDays.methods.createNewPledge().estimateGas();
    const result = await SixtySixDays.methods.createNewPledge().send({
      from: #account-goes-here,
      gas,
      value: #value-goes-here
    })
    console.log(result);
  }

谢谢,非常感谢您的帮助。

【问题讨论】:

  • “显然你不能在嵌套函数中直接使用它们”...为什么不呢?
  • 我基于文档中的钩子规则。我在尝试后意识到了这一点,但它不起作用
  • 我认为仅将它们用作handlePledge 函数中的变量没有任何问题。什么问题?
  • 你必须在组件的顶层调用钩子本身(即useState),但你可以在函数的任何地方使用状态变量(或设置函数),只需正常关闭
  • 谢谢你们的帮助,我误解了文档的意思

标签: javascript reactjs react-hooks web3js


【解决方案1】:

您可以像这样直接传递值:

 const result = await SixtySixDays.methods.createNewPledge().send({
   from: account,
   gas,
   value: value
}

“显然你不能在嵌套函数中直接使用它们。” - 你可以而且你应该

【讨论】:

  • 谢谢佩德罗,我误读并误解了文档
【解决方案2】:

您可以并且应该直接使用任何状态变量。

    const result = await SixtySixDays.methods.createNewPledge().send({
      from: account,
      gas,
      value: value
    })

以上应该可以。

【讨论】:

  • 谢谢好奇的家伙,我误读并误解了文档
  • 哈哈,这发生在我们最好的人身上!
【解决方案3】:

正如@Nick 所暗示的,您实际上可以在封闭范围内使用这些变量。它们可以从您在其共享范围内声明的函数完全访问。

也许您的问题是如何更新渲染?如果我没有回答您的问题,请说明您遇到的确切错误。

【讨论】:

  • 我已更新到建议但仍然无法正常工作。我得到的错误是在提交表单时没有将值传递给发送。那就是读取的值是0,我不明白为什么。
猜你喜欢
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2020-04-26
  • 2020-06-27
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
相关资源
最近更新 更多