我是React Native的新手,并且在下面引用了一个错误:
对象作为React子对象无效(找到:带有键{$$ typeof,type,key,ref,props,_owner,_store}的对象)。如果要渲染子级集合,请改用数组。
这是我的整个代码,除了样式外,还包含在组件文件中:
import React, { Component } from 'react'; import { View, Text, TextInput, TouchableOpacity, Image, StyleSheet } from 'react-native'; import firebase from 'firebase'; class LoginForm extends Component { state = { email: '', password: '', error: '', loading: false }; onButtonPress(){ const email = this.state.email; const password = this.state.password; this.setState({error: '', loading: true}); firebase.auth().signInWithEmailAndPassword(email, password) .then(this.onLoginSuccess.bind(this)) .catch(() => { firebase.auth().createUserWithEmailAndPassword(email, password) .then(this.onLoginSuccess.bind(this)) .catch(this.onLoginFail.bind(this)); }); } onLoginSuccess(){ this.setState({email: '', password: '', error: '', loading: false}); } onLoginFail(){ this.setState({error: 'Nie udalo sie utworzyc konta.', loading: false}); } render(){ return( <View style={styles.container}> <View style={styles.imageContainer}> <Image style={styles.image} source={require('../images/loginIcon.png')} /> </View> <View style={styles.formContainer}> <TextInput style={styles.input} placeholder="Email..." placeholderTextColor='rgba(255,255,255,0.9)' underlineColorAndroid='rgba(0,0,0,0)' onChangeText={(email) => this.setState({email: email})} value={this.state.email} autoCorrect={false} /> <TextInput style={styles.input} placeholder="Hasło..." placeholderTextColor='rgba(255,255,255,0.9)' underlineColorAndroid='rgba(0,0,0,0)' autoCorrect={false} onChangeText={(password) => this.setState({password: password})} value={this.state.password} secureTextEntry /> <TouchableOpacity style={styles.buttonContainer}> <Text style={styles.button}> Zaloguj się </Text> </TouchableOpacity> <Text style={styles.error}> {this.state.error} </Text> </View> </View> ); } }
我很困惑如何解决该问题。提前致谢。
试试这个:
从App.js中删除firebase导入语句:
import firebase from 'firebase'
在Firebase初始化上,创建一个常量:
initializeFirebase() { const firebase = require("firebase"); // Initialize Firebase var config = { ... }; firebase.initializeApp(config); //inicializando o firestore const firestore = require("firebase/firestore"); db = firebase.firestore(); db.settings({ timestampsInSnapshots: true }); } componentWillMount() { this.initializeFirebase(); ... }
对我来说,这种解决方法非常有效!