popular模块自定义标签的问题

来源:5-7 Popular(最热)模块的自定义标签功能实现-2

慕仔3427096

2018-08-08

http://img.mukewang.com/szimg/5b6ab4820001a4c906631180.jpg


做那个popular模块自定义标签的时候报这个错误   错误应该是  AsyncStorage.getItem这个方法引起的。我把这个删了就不会报错。看了好久实在看不出问题

这是languageDao.js里的代码  没看出哪里有问题

import React from 'react';

import { AsyncStorage } from 'react-native';

import keys from '../../data/keys.json';

export let FLAG_LANGUAGE = { flag_language: 'flag_language_language',flag_key: 'flag_language_key' };

export default class LanguageDao {

  constructor(flag) {

    this.flag = flag;

  }

  fetch() {

    return new Promise((resolve,reject) => {

      AsyncStorage.getItem(this.flag, (error, result) => {

        if (error) {

          reject(error)

        }else {

          if (result) {

            try {

              resolve(JSON.parse(result))

            } catch (e) {

              reject(e)

            }

          }else {

            let data = this.flag === FLAG_LANGUAGE.flag_key ? keys : null;

            this.save(data);

            resolve(data);

          }

        }


      })

    })

  }

  save(data) {

    AsyncStorage.setItem(this.flag, JSON.stringify(data), (error) => {


    })

  }

}




写回答

1回答

CrazyCodeBoy

2018-08-09

AsyncStorage.setItem(key,value)

AsyncStorage.getItem(key, ...)

AsyncStorage的存储和保存的key不能为空,检查下this.flag是不是为空了;

可参考:

https://github.com/facebook/react-native/issues/9743

https://github.com/facebook/react-native/issues/18602

https://stackoverflow.com/questions/39059800/react-native-asyncstorage-firebase-json-value-null-of-type-nsnull-cannot-be?rq=1


0
1
慕仔3427096
非常感谢!
2018-08-09
共1条回复

React Native技术精讲与高质量上线App开发

一个真实的上线项目,一次完整的开发过程,全面掌握React Native技术

1577 学习 · 727 问题

查看课程