Javascript 现在正在表单提交中调用函数
我正在学习React课程,在本模块中,我正在学习如何将数据插入Firebase数据库,但我仍停留在当前课程中,因为我的代码没有在数据库中插入数据,试图调试问题,我发现“地籍”函数没有被调用。有人知道为什么不在数据库中插入数据吗 我没有得到任何错误,唯一的问题是我在输入字段中插入数据,然后单击按钮,但它不会将数据插入数据库Javascript 现在正在表单提交中调用函数,javascript,reactjs,firebase,function,Javascript,Reactjs,Firebase,Function,我正在学习React课程,在本模块中,我正在学习如何将数据插入Firebase数据库,但我仍停留在当前课程中,因为我的代码没有在数据库中插入数据,试图调试问题,我发现“地籍”函数没有被调用。有人知道为什么不在数据库中插入数据吗 我没有得到任何错误,唯一的问题是我在输入字段中插入数据,然后单击按钮,但它不会将数据插入数据库 import React, { Component } from 'react'; import firebase from 'firebase' export defau
import React, { Component } from 'react';
import firebase from 'firebase'
export default class App extends Component {
constructor (props){
super(props);
this.state = {
tokenInput: '',
token: 'Carregando',
nome: '',
idade: '',
};
this.cadastrar = this.cadastrar.bind(this);
// Your web app's Firebase configuration
let firebaseConfig = {
apiKey: "xxxxxx",
authDomain: "xxxxx",
databaseURL: "xxxx",
projectId: "xxxx",
storageBucket: "xxxx",
messagingSenderId: "xxxx",
appId: "xxxx"
};
// Initialize Firebase
if(!firebase.apps.length){
firebase.initializeApp(firebaseConfig)};
// Olheiro
/*
firebase.database().ref('token').on('value', (snapShot) => {
let state = this.state;
state.token = snapShot.val().token;
this.setState(state);
});
*/
firebase.database().ref('token').on('value', (snapshot) => {
let state = this.state;
state.token = snapshot.val();
this.setState(state);
});
firebase.database().ref('usuarios').child(1).on('value', (snapShot) => {
let state = this.state;
state.nome = snapShot.val().nome;
state.idade = snapShot.val().idade;
this.setState(state);
});
}
cadastrar(e){
firebase.database.ref('token').set(this.state.tokenInput);
e.preventDefault();
}
render(){
const { token, nome , idade} = this.state;
return(
<div>
<form onSubmit={this.cadastrar}>
<input type='text' value={this.state.tokenInput}
onChange={(e) => this.setState({tokenInput: e.target.value})} />
<button type='submit'>Cadastrar1</button>
</form>
<h1>Token: {token} </h1>
<h1>Nome: {nome} </h1>
<h1>Idade: {idade} </h1>
</div>
);
}
}
从“React”导入React,{Component};
从“firebase”导入firebase
导出默认类应用程序扩展组件{
建造师(道具){
超级(道具);
此.state={
令牌输入:“”,
标记:“Carregando”,
诺姆:“,
idade:“”,
};
this.cadastar=this.cadastar.bind(this);
//您的web应用程序的Firebase配置
让firebaseConfig={
apiKey:“xxxxxx”,
authDomain:“xxxxx”,
数据库URL:“xxxx”,
投影:“xxxx”,
存储桶:“xxxx”,
messagingSenderId:“xxxx”,
appId:“xxxx”
};
//初始化Firebase
如果(!firebase.apps.length){
firebase.initializeApp(firebaseConfig)};
//奥列罗
/*
firebase.database().ref('token')。on('value',(快照)=>{
让state=this.state;
state.token=snapShot.val().token;
本.设置状态(状态);
});
*/
firebase.database().ref('token')。on('value',(快照)=>{
让state=this.state;
state.token=snapshot.val();
本.设置状态(状态);
});
firebase.database().ref('usuarios').child(1).on('value',(快照)=>{
让state=this.state;
state.nome=snapShot.val().nome;
state.idade=snapShot.val().idade;
本.设置状态(状态);
});
}
地籍(e){
firebase.database.ref('token').set(this.state.tokenInput);
e、 预防默认值();
}
render(){
const{token,nome,idade}=this.state;
返回(
this.setState({tokenInput:e.target.value})}/>
地籍1
令牌:{Token}
Nome:{Nome}
Idade:{Idade}
);
}
}
可能没有调用此函数,但控制台可能在从表单提交重新加载页面之前显示TypeError,因为database.ref
不是函数。然后,代码将在到达e.preventDefault()
行之前停止执行。为了帮助将来捕获这些错误,我建议将preventDefault
调用放在处理程序的顶部,这样控制台输出就不会丢失
为了修复TypeError,我认为您需要将其更改为firebase.database().ref('token')
完整功能:
地籍(e){
e、 预防默认值();
firebase.database.ref('token').set(this.state.tokenInput);
}
有控制台错误吗?我认为firebase.database.ref('token')
应该是firebase.database().ref('token')
你是对的,问题是我忘记了firebase.database的(),非常感谢
cadastrar(e){
firebase.database.ref('token').set(this.state.tokenInput);
e.preventDefault();
}