【发布时间】:2022-01-01 02:31:37
【问题描述】:
我正在尝试使用异步存储来显示数据(以数组的形式)。控制台记录数据有效,但是当我将数据置于状态并尝试通过它进行映射以显示时,它不会。欢迎任何帮助。谢谢!
控制台日志中的结果:["team1", "team2", "team3"] 在 JSON.parse 之前
Array [ "team1", "team2", "team3", ] 在 JSON.parse 之后
const [favoriteTeams, setFavoriteTeams] = useState([]);
const setStorage = async (team) => {
let teams = [];
try {
let storedTeams = await AsyncStorage.getItem('favTeams');
if (storedTeams !== null) {
teams = JSON.parse(storedTeams);
}
teams.push(team)
await AsyncStorage.setItem('favTeams', JSON.stringify(teams));
} catch (error) {
//error
}
};
const getStorage = async () => {
const teams = await AsyncStorage.getItem('favTeams')
if (teams !== null) {
setFavoriteTeams(prevState => [...prevState, ...JSON.parse(teams)])
}
}
useEffect(() => {
getStorage()
}, [])
return (
<View>
{favoriteTeams.map((item) => {(
<Text>{item}</Text> //console.log(item) works
)}
)}
</View>
)
【问题讨论】:
-
能否请您添加从
AsyncStorage.getItem获得的数据? -
["team1", "team2", "team3"]在 JSON.parse 之前Array [ "team1", "team2", "team3", ]在 JSON.parse 之后
标签: javascript arrays reactjs react-native asynchronous