我正在尝试用firebase react Native安装Notification push。我为iOS设置了所有的环境,并添加了请求权限的功能。在那之前,它是工作的,但一旦重新加载应用程序,我有这个错误:
错误:对象作为React子级无效(找到:具有键{_u,_v,_w,_x}得对象).如果要呈现子级集合,请改用数组。
显然是权限函数出了问题,但它仍然工作,因为我有控制台。LOG:[Thu Mar25 2021 14:08:06.506]日志授权状态:1
阿尔索我的代码:
RequestUserPermission = async () => {
const authStatus = await messaging().requestPermission();
const enabled =
authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
authStatus === messaging.AuthorizationStatus.PROVISIONAL;
if (enabled) {
console.log('Authorization status:', authStatus);
}
};
和我的渲染
<SafeAreaView style={{backgroundColor: 'black', flex: 1}}>
<View style={styles.container}>
{this.RequestUserPermission()}
<Text style={styles.title}>S'identifier</Text>
<TextInput
style={styles.input}
underlineColorAndroid="transparent"
placeholder="Email"
placeholderTextColor="grey"
autoCapitalize="none"
onChangeText={this.handleEmail}
/>[...]
它抛出错误是因为它希望this.requestUserPermission()
返回一个有效的react子级,而它不是。
发生这种情况的原因是您选择在render()
函数的返回中包含对this.RequestUserPermission()
的调用。render()
函数应该只返回有效的react元素。
为了解决这个问题,您应该在返回之前调用this.RequestUserPermission()
,但是从您的小示例来看,在每个呈现上调用这个函数似乎是违反直觉的,所以它可能应该放在componentDidMount()或相应的useEffect钩子中。