Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 将React表单值保存到firebase实时数据库_Reactjs_Firebase_Firebase Realtime Database - Fatal编程技术网

Reactjs 将React表单值保存到firebase实时数据库

Reactjs 将React表单值保存到firebase实时数据库,reactjs,firebase,firebase-realtime-database,Reactjs,Firebase,Firebase Realtime Database,我已经完成了这段代码,它在编写console.log()方法时正确地显示了控制台输出,但它没有将代码存储到我的数据库中 它不会显示任何其他错误,但不会将数据存储到数据库中,所以请告诉我要更改什么以存储到数据库中 代码如下: import React, { Component } from 'react'; var firebase = require('firebase'); var uuid = require('uuid'); var config = {

我已经完成了这段代码,它在编写console.log()方法时正确地显示了控制台输出,但它没有将代码存储到我的数据库中

它不会显示任何其他错误,但不会将数据存储到数据库中,所以请告诉我要更改什么以存储到数据库中

代码如下:

import React, { Component } from 'react';
    var firebase = require('firebase');
    var uuid = require('uuid');

    var config = {
        apiKey: "AIzaSyDf5i7ULK0JTWYM3_X3wMQPUaaLPRYExC0",
        authDomain: "usurvey-419eb.firebaseapp.com",
        databaseURL: "https://usurvey-419eb.firebaseio.com",
        projectId: "usurvey-419eb",
        storageBucket: "usurvey-419eb.appspot.com",
        messagingSenderId: "395101866940"
      };
      firebase.initializeApp(config);
    class Usurvey extends Component {
      constructor(props)
      {
        super(props);
        this.state={
          uid:uuid.v1(),
          firstName: '',
          lastName:''
        };
        this.submitData=this.submitData.bind(this);
        this.inputData=this.inputData.bind(this);
      }
      submitData()
      {
        document.write({uid: this.state.uid,firstName:this.state.firstName,lastName:this.state.lastName});
        // document.write(this.state.firstName);
        // document.write(this.state.lastName);


        firebase.database().ref('Newdata/'+this.state.uid).set({
          firstName: this.state.firstName,
          lastName: this.state.lastName
        });
      }
      inputData(event)
      {
        var firstName = this.refs.name1.value;
        var lastName = this.refs.name1.value;
        console.log(this.state.uid,this.state.firstName,this.state.lastName);

        this.setState({firstName:firstName, lastName:lastName});
        console.log(this.state.firstName,this.state.lastName);
      }
      render(){
        return(
          <div>
            <form onSubmit={this.submitData}>
              <input type="text" onChange={this.inputData} ref="name1"/>
              <input type="text" onChange={this.inputData} ref="name2"/>
            <input type="submit" />Submit
            </form>
          </div>
        );
      }
    }
    export default Usurvey;
import React,{Component}来自'React';
var firebase=require('firebase');
var uuid=require('uuid');
变量配置={
apiKey:“AIzaSyDf5i7ULK0JTWYM3_X3WMQPUALPRYEXC0”,
authDomain:“usurvey-419eb.firebaseapp.com”,
数据库URL:“https://usurvey-419eb.firebaseio.com",
项目:“usurvey-419eb”,
storageBucket:“usurvey-419eb.appspot.com”,
messagingSenderId:“395101866940”
};
firebase.initializeApp(配置);
类Usurvey扩展组件{
建造师(道具)
{
超级(道具);
这个州={
uid:uuid.v1(),
名字:'',
姓氏:“”
};
this.submitData=this.submitData.bind(this);
this.inputData=this.inputData.bind(this);
}
提交数据()
{
write({uid:this.state.uid,firstName:this.state.firstName,lastName:this.state.lastName});
//文件。写(本。州。名);
//document.write(this.state.lastName);
firebase.database().ref('Newdata/'+this.state.uid).set({
名字:this.state.firstName,
lastName:this.state.lastName
});
}
输入数据(事件)
{
var firstName=this.refs.name1.value;
var lastName=this.refs.name1.value;
log(this.state.uid,this.state.firstName,this.state.lastName);
this.setState({firstName:firstName,lastName:lastName});
log(this.state.firstName,this.state.lastName);
}
render(){
返回(
提交
);
}
}
出口违约高利贷;

提交表单时,必须防止默认行为,否则页面将刷新。将submit事件作为参数传递给submitData()函数,并防止出现如下默认行为

submitData(event) {
        event.preventDefault();
        firebase
          .database()
          .ref(`Newdata/${this.state.uid}`)
          .set({
            firstName: this.state.firstName,
            lastName: this.state.lastName,
          })

      }
表单是老式的HTML,在单页应用程序出现之前就已经存在了,因此在react这样的新奇框架中使用表单时,您必须明确告诉它不要自动重新加载页面。默认情况下,它会重新加载,因为在出现单页应用程序之前,web通常都是这样工作的

提供了所有代码,并从数据库onMount添加了一个控制台日志,以显示正在存储和检索数据。复制到编辑器中,它应该可以工作

import React, { Component } from 'react';
const firebase = require('firebase');
const uuid = require('uuid');

const config = {
  apiKey: 'AIzaSyDf5i7ULK0JTWYM3_X3wMQPUaaLPRYExC0',
  authDomain: 'usurvey-419eb.firebaseapp.com',
  databaseURL: 'https://usurvey-419eb.firebaseio.com',
  projectId: 'usurvey-419eb',
  storageBucket: 'usurvey-419eb.appspot.com',
  messagingSenderId: '395101866940',
};
firebase.initializeApp(config);

class Usurvey extends Component {
  constructor(props) {
    super(props);
    this.state = {
      uid: uuid.v1(),
      firstName: '',
      lastName: '',
    };
    this.submitData = this.submitData.bind(this);
    this.inputData = this.inputData.bind(this);
  }

  componentDidMount() {
    firebase
      .database()
      .ref(`Newdata/${this.state.uid}`)
      .on('value', snap => console.log('from db', snap.val()));
  }

  submitData(event) {
    event.preventDefault();
    firebase
      .database()
      .ref(`Newdata/${this.state.uid}`)
      .set({
        firstName: this.state.firstName,
        lastName: this.state.lastName,
      })
      .catch(error => console.log(error));
  }
  inputData(event) {
    const firstName = this.refs.name1.value;
    const lastName = this.refs.name2.value;
    this.setState({ firstName, lastName });
  }
  render() {
    return (
      <div>
        <form onSubmit={this.submitData}>
          <input type="text" onChange={this.inputData} ref="name1" />
          <input type="text" onChange={this.inputData} ref="name2" />
          <input type="submit" />Submit
        </form>
      </div>
    );
  }
}
export default Usurvey;
import React,{Component}来自'React';
const firebase=require('firebase');
const uuid=require('uuid');
常量配置={
apiKey:“AIzaSyDf5i7ULK0JTWYM3_x3WMQPUALPRYEXC0”,
authDomain:'usurvey-419eb.firebaseapp.com',
数据库URL:'https://usurvey-419eb.firebaseio.com',
项目:“usurvey-419eb”,
storageBucket:“usurvey-419eb.appspot.com”,
messagingSenderId:'395101866940',
};
firebase.initializeApp(配置);
类Usurvey扩展组件{
建造师(道具){
超级(道具);
此.state={
uid:uuid.v1(),
名字:'',
姓氏:“”,
};
this.submitData=this.submitData.bind(this);
this.inputData=this.inputData.bind(this);
}
componentDidMount(){
火基
.数据库()
.ref(`Newdata/${this.state.uid}`)
.on('value',snap=>console.log('from db',snap.val());
}
提交数据(事件){
event.preventDefault();
火基
.数据库()
.ref(`Newdata/${this.state.uid}`)
.设置({
名字:this.state.firstName,
lastName:this.state.lastName,
})
.catch(错误=>console.log(错误));
}
输入数据(事件){
const firstName=this.refs.name1.value;
const lastName=this.refs.name2.value;
this.setState({firstName,lastName});
}
render(){
返回(
提交
);
}
}
出口违约高利贷;

还更改了const lastName=this.refs.name2.value;,您的had设置为1,这是重复的。我在编辑器中运行了代码,它工作正常。你得到了什么错误?我需要添加componentDidMount()方法吗?不是,那只是为了证明它能工作。由于我看不到您的firebase控制台,我必须记录数据以显示数据已保存。没有错误,但当我填写数据并点击“回车”页面时,无法重新加载数据,我只能通过cmd+r按钮手动重新加载数据。。。。