带有异步和等待的箭头函数在本机反应中

Posted

技术标签:

【中文标题】带有异步和等待的箭头函数在本机反应中【英文标题】:Arrow functions with async and await in react native 【发布时间】:2017-09-28 19:25:33 【问题描述】:

我正在尝试将AsyncStorage 中的数据保存在react-native 中。我想异步保存它,所以使用asyncawait 关键字。

  async onPositiveClickListener = () => 
    // user has completed product tour_end
    try 
      await AsyncStorage.setItem("@ProductTour:key", "true");
      const  navigate  = this.props.navigation;
      navigate("DashboardScreen");
     catch (error) 
      console.log(error);
    
  ;

保存程序时出错

SyntaxError: Unexpected token, expected ( (40:32)
  38 |   ;
  39 | 
> 40 |   async onPositiveClickListener = () => 
     |                                 ^
  41 |     // save user has completed product tour_end
  42 |     try 
  43 |       await AsyncStorage.setItem("@ProductTour:key", "true");
Hide Stack Trace
SyntaxError: Unexpected token, expected ( (40:32)
  38 |   ;
  39 | 
> 40 |   async onPositiveClickListener = () => 
     |                                 ^
  41 |     // save user has completed product tour_end
  42 |     try 

【问题讨论】:

【参考方案1】:

异步命名箭头函数应该声明为

const onPositiveClickListener = async () => 
    // user has completed product tour_end
    try 
      await AsyncStorage.setItem("@ProductTour:key", "true");
      const  navigate  = this.props.navigation;
      navigate("DashboardScreen");
     catch (error) 
      console.log(error);
    
  ;

【讨论】:

AsyncStorage 接受三个参数,key 和 value,它们都是 string ,以及一个回调函数,所以你只能使用 AsyncStorage 设置 string。您可以做的是将您的其他数据类型转换为带有JSON.stringify(obj) 的字符串并在检索后对其进行解析,这样您就可以保存任何其他数据类型

以上是关于带有异步和等待的箭头函数在本机反应中的主要内容,如果未能解决你的问题,请参考以下文章

我可以在反应组件的构造函数中使用箭头函数吗?

从异步函数渲染反应本机孩子

如何迭代 JSON 数组并从异步箭头函数添加数据?

js---箭头函数

你能解释一下这个反应原生代码(渲染方法中的奇怪箭头函数)吗?

你如何创建一个命名的异步箭头函数? [复制]