【问题标题】: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 {

【问题讨论】:

    标签: javascript react-native async-await react-native-android


    【解决方案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) 的字符串并在检索后对其进行解析,这样您就可以保存任何其他数据类型
    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多