提问者:小点点

如何处理错误:对象作为React子级无效


我正在尝试用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}
          />[...]

共1个答案

匿名用户

它抛出错误是因为它希望this.requestUserPermission()返回一个有效的react子级,而它不是。

发生这种情况的原因是您选择在render()函数的返回中包含对this.RequestUserPermission()的调用。render()函数应该只返回有效的react元素。

为了解决这个问题,您应该在返回之前调用this.RequestUserPermission(),但是从您的小示例来看,在每个呈现上调用这个函数似乎是违反直觉的,所以它可能应该放在componentDidMount()或相应的useEffect钩子中。