我正在使用mobx(和mobx-persist)作为我的本机应用程序全局存储(我正在使用expo客户端)。首先,我从服务器获取一些数据,然后将结果保存在存储中,并将其持久保存在asyncStorage中。最初它运行良好,但随后突然出现问题,当我尝试登录该应用程序时冻结,然后崩溃,并包含“原因:空指针取消引用”的摘要。以下是我的代码。
商店代码:
/[0-9]/
登录屏幕代码:
import { observable, computed, action, set } from 'mobx';
import { create, persist } from 'mobx-persist';
import { AsyncStorage } from 'react-native';
class Store {
URL = 'XX.XX.XX.XX'
@persist('object') @observable db = {
authToken: '',
buses: null,
term: null,
}
@computed get buses () {
return this.db.buses
}
@computed get term () {
return this.db.term
}
@computed get authToken () {
return this.db.authToken
}
@action setAuthToken = (token) => {
this.db.authToken = token;
}
@action setBuses = (buses) => {
this.db.buses = buses;
}
@action setTerm = (term) => {
this.db.term = term;
}
}
const hydrate = create({
storage: AsyncStorage,
jsonify: true
})
store = new Store()
storeLoader = async () => {
await hydrate('object', store)
return store
}
hydrate('object', store)
module.exports = { store, storeLoader }
AuthToken和术语均被保存,但是总线在登录时或返回应用程序时返回null。 经过调试和搜索数小时后,我发现有些人面临类似的问题,因为他们试图保存嵌套对象的大数组,所以我认为也许buss数组实际上是如此之大(不是这样),所以我尝试仅用1个键保存对象公交车中使用“-值”对,但没有成功。
答案 0 :(得分:0)
通过使用自定义类的持久列表修复:
在类商店中:
@persist('list', Bus) @observable Buses = []
和“公交”类:
class Bus {
@persist @observable someField1 = ''
@persist @observable someField2 = false
@persist('list', field) @observable fields = []
}
偶数类总线使用了另一个类字段:
class field {
@persist @observable someField1 = ''
@persist @observable someField2 = ''
}