问题描述
当我尝试通过AsyncStorage.getItem()设置值时,我无法要求它返回。
message.channel.send(`the current number is: ${number}`).then(message => {
message.react('1️⃣')
message.react('2️⃣')
message.react('3️⃣')
});
const filter = (reaction,user) => {
return ['1️⃣','2️⃣','3️⃣'].includes(reaction.emoji.name)
&& user.id === message.author.id;
}
message.awaitReactions(filter,{ max: 1,time: 20000,errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '1️⃣') {
message.reply('you reacted with 1');
} else if (reaction.emoji.name === '2️⃣') {
message.reply('you reacted with 2');
} else {
message.reply('you reacted with 3');
}
})
.catch(collected => {
message.reply('game has ended');
});
我已经设置了如下项目
let tokenData = null;
const getData = async () => {
let token;
try {
token = await AsyncStorage.getItem('token');
tokenData = JSON.parse(token);
} catch (e) {
// error reading value
}
};
解决方法
如果要存储数据,则必须这样设置setItem:
const storeData = async (key,value) => {
try {
await AsyncStorage.setItem(key,value);
} catch (error) {
console.log(error);
}
};
然后您可以使用getItem检索它,如下所示:
const getData = async key => {
try {
const data = await AsyncStorage.getItem(key);
if (data !== null) {
console.log(data);
return data;
}
} catch (error) {
console.log(error);
}
};
,
const setLoginLocal = async loginData => {
try {
let token = loginData.headers.authorization;
let headerToken = ['token',JSON.stringify(token)];
let user = ['user',JSON.stringify(loginData.data)];
await AsyncStorage.setItem([user,headerToken]);
} catch (err) {
console.log(err);
}
};