我正在使用带Firebase实时存储的React Native Crud应用程序。我将Firebase身份验证功能与电子邮件和密码记录一起使用。但我的Firebase身份验证无法正常工作。 Firebase连接遇到更多问题。我使用此功能连接Firebase。
componentWillMount() {
firebase.initializeApp({
apiKey: 'xxxxxxxxxxxxxxxxxxxxxxxx',
authDomain: 'xxxxxxxxxxxxxxxxxxxxxx',
databaseURL: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
projectId: 'xxxxxxxxxxxxxxxxxxxxx',
storageBucket: 'xxxxxxxxxxxxxxxxxxxxxxxx',
messagingSenderId: 'xxxxxxxxxxxxxxx'
});
}
我的登录按钮身份验证功能如下:
state = { email: '', password: '', error: '' };
onButtonPress() {
const { email, password } = this.state;
firebase.auth().signInWithEmailAndPassword(email, password)
.catch(() => {
firebase.auth().createUserWithEmailAndPassword(email, password)
.catch(() => {
this.setState({ error: 'Authenticaton Failed.' });
});
});
}
我这样导入firebase库:
import * as firebase from 'firebase';
import 'firebase/firestore';
import 'firebase/auth';
但是此配置不起作用。它显示了此错误:
undefined is not a function (evaluating 'firebase.auth()')
我曾经通过这种方法获取文本输入值:
value={this.state.password}
onChangeText={password => this.setState({ password })}
答案 0 :(得分:1)
您的Firebase配置仅存在于您的componentDidMount
中。像这样尝试:
在任意位置创建文件<namefile>.js
并添加:
import * as firebase from 'firebase'
import 'firebase/auth';
const config = {
apiKey: "your key",
authDomain: "domain",
databaseURL: xxxx",
projectId: "xxxx",
storageBucket: "xxx",
messagingSenderId: "xxxx"
};
if (!firebase.apps.length) {
firebase.initializeApp(config);
}
const auth = firebase.auth();
export {
auth
};
将auth
导入组件和按钮方法中,可通过以下方法更改代码:
auth.signInWithEmailAndPassword
它应该可以工作,并且每次您需要使用auth
时,只需导入即可