NextJS:表单数据未发送到快递服务器

NextJS: Form data isn't sent to the express server

我正在尝试将表单数据发送到 Nextjs/express app.When 中的服务器 我按 'submit',我看不到任何输出被发送到服务器。

我尝试了以下代码但没有成功,我不明白为什么它不起作用,因为我完全是这个 stack.File 我项目结构的新手,如下所示。

index.js

class Index extends Component{

render(){
return(
    <form action="/server" method="post">
        <input type="text" id="name"></input>
        <input type="submit"/>
    </form>
);
}
}

server.js

server.post('/server', (req, res) => {
    const name  = req.body
    res.send(name)
})

我希望网页显示我在 form.instead 的输入字段中输入的数据,它只显示一对花括号 ( {} )。

编辑

我在前端和后端切换了您的示例存储库中的一些内容。您可以在代码示例中看到它们!

为此,您需要两件事:

用于处理输入的 onChange 处理程序和用于处理向服务器提交的 onSubmit 处理程序。这是我对您的示例的实现。

class Index extends Component {
    constructor() {
    super();
    this.state = {
        firstName: '',
    };
}
handleChange = evt => {
// This triggers everytime the input is changed
    this.setState({
        [evt.target.name]: evt.target.value,
    });
};
 handleSubmit = evt => {
      evt.preventDefault();
      //making a post request with the fetch API
      fetch('/server', {
        method: 'POST',
        headers: {
              'Accept': 'application/json',
              'Content-Type': 'application/json'
        }, 
        body: JSON.stringify({
             firstName:this.state.firstName
           })
        })
        .then(response => response.json())
        .then(data => console.log(data))
        .catch(error => console.log(error))
     });
  };
render(){
  return(
    <form onSubmit={this.handleSubmit} >
        <input 
            name="firstName" 
            type="text" 
            id="name" 
            value={this.state.firstName} 
            onChange={this.handleChange}>
        </input>
        <input type="submit"/>
    </form>
    );
  }
}

您的服务器代码:

const express = require('express')
const next = require('next')
const bodyParser = require('body-parser')

const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app.prepare().then(() => {
  const server = express()
  server.use(bodyParser.urlencoded({ extended: true }))
  server.use(bodyParser.json())

  server.post('/server', (req, res) => {
    console.log(req.body)
    const firstName = req.body.firstName
    res.send({firstName})
})

  server.get('*', (req, res) => {
    return handle(req, res)
  })

  server.listen(3000, (err) => {
    if (err) throw err
    console.log('> Read on http://localhost:3000')
  })
})

希望对您有所帮助!