使用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-storage具有https://github.com/react-native-community/async-storage

Js.Promise.then_的类型为

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

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

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

  1. 您没有从传递给then_的函数返回promise
  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))将返回一个promise,其中包含调用Js.log的结果,即unit,因此生成的promise的类型为Js.Promise.t(unit)

有关如何使用promise的更多信息,请参阅Reason文档。

相关内容

  • 没有找到相关文章

最新更新