首页 > 解决方案 > 如何将数据从反应前端传递到节点快递后端?

问题描述

我刚刚构建了一个应用程序,我希望能够将数据从我的 OnSubmit 函数发送到 express 后端并将其存储在那里。

这是我的服务器代码:

const express = require('express');
const bodyParser = require('body-parser')
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));

app.get('/home', function (req, res) {
 return res.send('home');
});

app.get('/', function (req, res) {
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.listen(process.env.PORT || 8080);

这是我的提交功能

import React, { Component } from 'react';
import './App.css';
import PageOne from './Components/PageOne';
import PageTwo from './Components/PageTwo';
import PageThree from './Components/PageThree';
import PageFour from './Components/PageFour';
import PageFive from './Components/PageFive';
import PageSix from './Components/PageSix';
import {Button,  } from 'semantic-ui-react'
import axios from 'axios';


class App extends Component {


  constructor(props){
    super(props)
    this.state={
      generalDetails: "Text",
      fName: "Text",
      mName: "Text",
      LName: "Text",

    }

    this.onContentChange = this.onContentChange.bind(this);
    this.onSubmitForm = this.onSubmitForm.bind(this);
  }




  render() {

    return (

      <div className="App">


      <PageOne handleChange={this.onContentChange}  />
      <PageTwo handleChange={this.onContentChange} />
      <PageThree handleChange={this.onContentChange} />
      <PageFour handleChange={this.onContentChange} />
      <PageFive handleChange={this.onContentChange}/>
      <PageSix handleChange={this.onContentChange} />

      <Button onClick={this.onSubmitForm} >
      Submit Form
      </Button>

    <br/>
    <br/>
      </div>
    );
  }



  onSubmitForm(e){
  e.preventDefault();
  
  console.log(
    //start of page one
    '* general Details: ' ,this.state.generalDetails,
    '* First Name: ', this.state.fName,
    '* Middle Name: ', this.state.mName,
    '* Last Name: ', this.state.lName,

  );
}
  //end

  onContentChange(fieldname, data){

    console.log('On Content Change', data);

     this.setState({
       [fieldname]: data

    });
  }



}

标签: node.jsreactjsexpress

解决方案


选择一个 HTTP 客户端,我推荐axios它以方便使用。

您在 react 客户端上的代码应如下所示:

const respone = axios.post('http://localhost:8080/<your_endpoint>', {
  generalDetail: this.state.generalDetails,
  firstName: this.state.firstName,
  middleName: this.state.middleName,
  lastName: this.state.lastName
})

然后,您解析响应并获取数据,它是 promise 对象。


推荐阅读