如何在本机反应中处理异步函数响应并保存在useState中?

Posted

技术标签:

【中文标题】如何在本机反应中处理异步函数响应并保存在useState中?【英文标题】:How to handle Async function response in react native and save in useState? 【发布时间】:2021-04-06 18:04:23 【问题描述】:
const [confirm, setConfirm] = useState(null);

const signIn = async phoneNumber => 
  console.log('Entered into signIn Function');
  setTextInputState(false);
  setSendOtpButtonState(true);

  const confirmation = await auth().signInWithPhoneNumber(phoneNumber);
  console.log('This is conformation1' + JSON.stringify(confirmation));
  setSendOtpButtonState(true);
  setOtpInputState(true);

  let res = confirmation;
  setConfirm(res);

  console.log('This is conformation2' + JSON.stringify(confirm));
;

如何在 useState 中设置构象。当我们第一次进入 signIn 函数时,将 useState 值设置为 null 并且第二次在 useState 中设置值。我想第一次设置值。

【问题讨论】:

共享完整组件,我认为在这种情况下你也需要useEffect 【参考方案1】:

这可能会有所帮助

const signIn = async (phoneNumber) => 

  const [confirm, setConfirm] = useState(null);
  ...

  useEffect(async () => 
    const confirmation = await auth().signInWithPhoneNumber(phoneNumber);
    console.log("This is conformation1" + JSON.stringify(confirmation));
    setSendOtpButtonState(true);
    setOtpInputState(true);

    let res = confirmation;
    setConfirm(res);
  , []);

  console.log("This is conformation2" + JSON.stringify(confirm));
;

【讨论】:

我收到了这个错误。错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一: 1. 你可能有不匹配的 React 版本和渲染器(例如 React DOM) 2. 你可能违反了 Hooks 规则 3. 你可能有多个 React 副本同一个应用 我用你的代码更新了,但它不起作用 还是同样的问题?无效的 Hook 调用? 同样的问题先生。

以上是关于如何在本机反应中处理异步函数响应并保存在useState中?的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 插件从本机函数获取异步响应

在自定义组件中调用 useState Hook 时反应本机 TextInput ReRenders

无法在本机反应中访问 json 值

使用 textInput 和函数组件在本机反应中更改数组对象值

useState 与接口 - 反应本机打字稿

如何在反应网络中处理长按事件