【发布时间】:2020-04-14 00:43:42
【问题描述】:
我收到此错误。诺言似乎没有兑现。 但是,我不确定如何解决这个问题...... 我正在使用异步存储
错误:
对象作为 React 子对象无效(发现:对象与键 {_40、_65、_55、_72})。
这是我的代码
const ProfileStackScreen = ({navigation}) => {
return (<ProfileStack.Navigator>
<ProfileStack.Screen name= {"Profile"} component={Profile}
options ={{
title: AsyncStorage.getItem('username'),
headerRight: () => (
<Icon name="cog" color={"grey"} size={26} style={{marginRight: 20}}
onPress={() => navigation.navigate("Settings")}/>
),
headerLeft: () => (
<Icon name="users" color={"grey"} size={23} style={{marginLeft: 20}}
onPress={() => navigation.navigate("ManageFriends")}/>
)
}}/>
<SettingsStack.Screen name="Settings" component={Settings}/>
<ManageFriendsStack.Screen name="ManageFriends" component={ManageFriends}/>
</ProfileStack.Navigator>);
}
编辑 1:
我注意到我可以做这样的事情
const ProfileStackScreen = ({navigation}) => {
AsyncStorage.getItem('username').then(name => {
//comment
console.log(name);
});
return (<ProfileStack.Navigator>
<ProfileStack.Screen name= {"Profile"} component={Profile}
options ={{
title: "hi",
headerRight: () => (
<Icon name="cog" color={"grey"} size={26} style={{marginRight: 20}}
onPress={() => navigation.navigate("Settings")}/>
),
headerLeft: () => (
<Icon name="users" color={"grey"} size={23} style={{marginLeft: 20}}
onPress={() => navigation.navigate("ManageFriends")}/>
)
}}/>
<SettingsStack.Screen name="Settings" component={Settings}/>
<ManageFriendsStack.Screen name="ManageFriends" component={ManageFriends}/>
</ProfileStack.Navigator>);
}
但是,我想在我的标题中设置名称(第 5 行)我无法执行 this.setState,因为我得到了(setState of undefined),并且我无法将 return 放在 //comment 中,因为我得到“找不到返回声明”
有什么想法可以实现这一点吗?
编辑 2
尝试添加 navigation.setOptions
const ProfileStackScreen = ({navigation}) => {
AsyncStorage.getItem('username').then(name => {
navigation.setOptions({title: name});
});
return (<ProfileStack.Navigator>
<ProfileStack.Screen name= {"Profile"} component={Profile}
options ={{
headerRight: () => (
<Icon name="cog" color={"grey"} size={26} style={{marginRight: 20}}
onPress={() => navigation.navigate("Settings")}/>
),
headerLeft: () => (
<Icon name="users" color={"grey"} size={23} style={{marginLeft: 20}}
onPress={() => navigation.navigate("ManageFriends")}/>
)
}}/>
<SettingsStack.Screen name="Settings" component={Settings}/>
<ManageFriendsStack.Screen name="ManageFriends" component={ManageFriends}/>
</ProfileStack.Navigator>);
}
但是,它被name= {"Profile"} 覆盖,它显示的是个人资料而不是我的用户名。
【问题讨论】:
-
这种对象 {_40, _65, _55, _72} 可能是因为您没有等待异步请求完成,您说您正在使用异步存储但我没有看到任何在您的共享代码中
-
@Charlie 在第 5 行,我编辑了我的帖子。有什么想法可以修改我的代码以使其正常工作吗?
标签: react-native