使用React本机异步存储getItem

  React.useEffect(_ => {
    ReactNativeAsyncStorage.getItem("jwt")
    |> Js.Promise.then_(jwt => {Js.log(jwt)});
    None;
  });

错误:

This expression has type unit but an expression was expected of type
         Js.Promise.t('a) = Js.Promise.t('a)

我将https://github.com/reason-react-native/async-storagehttps://github.com/react-native-community/async-storage一起使用

zcmbcb 回答:使用React本机异步存储getItem

Js.Promise.then_的类型是

('a => t('b),t('a)) => t('b)

这意味着传递给它的函数必须返回a,并且then_本身将返回该承诺。

您在代码中犯了两个错误:

  1. 您没有从传递给then_的函数中返回诺言
  2. 您没有处理then_返回的承诺。

以下内容可同时修复:

  React.useEffect(_ => {
    let _: Js.Promise.t(unit) =
      Js.Prmoise.(
        ReactNativeAsyncStorage.getItem("jwt")
        |> then_(jwt => resolve(Js.log(jwt)))
      );
    None;
  });

let _: Js.Promise.t(unit) = ...使用通配符模式来丢弃以下表达式的结果。结果的类型为Js.Result.t(unit),带有注释,以防止意外的部分应用。

resolve(Js.log(jwt))将返回一个承诺,其结果是调用Js.log的{​​{1}},因此为什么得到的承诺类型为unit

有关如何使用承诺的信息,请参见Reason documentation

本文链接:https://www.f2er.com/2561618.html

大家都在问