Node.js 如何处理反应中的反应

Node.js 如何处理反应中的反应,node.js,reactjs,Node.js,Reactjs,我是新来的。目前我正在创建一个登录屏幕。我有以下代码: function login(e) { fetch('/login') .then(response => { if(response === 'fail'){ return(SignIn()); }else{ return(Ide()); } }) .then((proposals) =>

我是新来的。目前我正在创建一个登录屏幕。我有以下代码:

function login(e) {
    fetch('/login')
      .then(response => {
        if(response === 'fail'){
            return(SignIn());
        }else{
            return(Ide());
        }
      })
      .then((proposals) => { 
        console.log(proposals);
        this.setState({ proposals }); 
      });
  }
export default function SignIn() {
  const classes = useStyles();

  return (
    <Container component="main" maxWidth="xs">
      <CssBaseline />
      <div className={classes.paper}>
        <Avatar className={classes.avatar}>
        </Avatar>
        <Typography component="h1" variant="h5">
          Sign in
        </Typography>
        <form className={classes.form} noValidate>
          <TextField
            variant="outlined"
            margin="normal"
            required
            fullWidth
            id="email"
            label="Email Address"
            name="email"
            autoComplete="email"
            autoFocus
          />
          <TextField
            variant="outlined"
            margin="normal"
            required
            fullWidth
            name="password"
            label="Password"
            type="password"
            id="password"
            autoComplete="current-password"
          />
          <Button
            type="submit"
            fullWidth
            onClick={login}
            variant="contained"
            color="primary"
            className={classes.submit}
          >
            Sign In
          </Button>
        </form>
      </div>
    </Container>
  );

但当我按下提交按钮时,电子邮件和密码都会被记录为未定义。如何在客户端和服务器之间使用react发送信息?提前感谢

无论何时使用fetch将信息发送到上面的“/login”之类的端点,都需要将req.body添加为fetch调用的一部分。要做到这一点,人们通常会这样做

fetch('/login', {
body: (whatever you send in the form of one object)
});
然后,作为第二个参数传入的body可以用作console.log代码中的req.body

但不建议这样做,因为GET命令通常不会将主体作为第二个参数传递。通常,POST和PUT命令具有主体,以便添加和更改数据。我的建议是:

fetch('/login/' + email + '/' + password);
这允许电子邮件和用户名对象成为中url的一部分,以便后端使用。这是一种人们在不传递身体的情况下获取命令的方式。使用新格式时,应将后端更改为:

app.get('/login/:email/:password', (req, res) => {
const email = req.params.email;
const password = req.params.password;
console.log(email, password);
url中的:email和:password允许您使用req.params,然后直接调用每个标识符作为最后一个值

顺便说一句,如果您觉得上面的fetch调用使用+命令看起来很混乱,您可以改为执行以下操作:

fetch(`/login/${email}/${password}`);
通过将值直接添加到字符串中,可以更容易地读取代码。(注意,他们使用“1号键旁边的键”或)


另外,如果您想了解更多关于fetch命令的信息,我建议您从开始。当您需要了解JS或其他web语言时,此网站非常有用。

等等什么?您甚至做出了响应吗?这只是一个
if
语句吗?我没有,当我点击submit时,它会为'/login'发送一个fetch请求,然后运行t他写了下面的代码,只是控制台记录了“undefined undefined”(未定义的未定义)Let We.我反对投票,因为粗鲁的行为是不可接受的,人们试图在这里免费提供帮助。
fetch(`/login/${email}/${password}`);