如何从Express路由到React Router路由使用数据

问题描述 投票:0回答:1

我有一条快速路由,在nodemailer向用户发送确认电子邮件后,它被点击。

router.route('/confirmation/:token').get((req, res, next) => {
  try {
    Token.findOne({ token: req.params.token }, function(err, token) {
      if (err)
        return res.status(404).send({
          type: 'not-verified',
          msg: 'We were unable to find a valid token. Your token my have expired.'
        });
      // If we found a token, find a matching user
      User.findOne({ _id: token._userId, email: req.body.username }, function(err, user) {
        if (err)
          return res
            .status(404)
            .send({ msg: 'We were unable to find a user for this token.' });
        if (user.isVerified)
          return res.status(400).send({
            type: 'already-verified',
            msg: 'This user has already been verified.'
          });

        // Verify and save the user
        user.isVerified = true;
        user.save(function(err) {
          if (err) {
            return res.status(500).send({ msg: err.message });
          }
          return res
            .status(200)
            .send({
              msg: [
                'The account has been verified. Please log in.',
                { userVerified: user.isVerified }
              ]
            })
            .redirect('/login');
        });
      });
    });
  } catch (err) {
    return next(err);
  }
});

电子邮件:

[您好,请通过单击链接验证您的帐户:http://localhost:8016/users/confirmation/a217ba992e977079eeeca541677fedcb

自然地,期望我将我带到:http://localhost:8016/users/confirmation/a217ba992e977079eeeca541677fedcb

并作为回应:

{
  "msg": [
  "The account has been verified. Please log in.",
  {
   "userVerified": true
  }
 ]
}

但是我想要通过React路由器使用此数据。要使用模式或其他组件,请使用它。从本质上来说,获取这些数据可以为我在客户端上的路线加油。

类似:

function PrivateRoute({ children, ...rest }) {
  return (
    <Route
      {...rest}
      render={({ location, props }) =>
        isLoggedIn ? (
          children
        ) : (
          <Redirect
            to={{
              pathname: '/',
              state: { from: location }
            }}
          />
        )
      }
    />
  );
}

  <PrivateRoute path={`/users/confirmation/${params.token}`}>
    {
      <Modal
        isAlertModal={false}
        history={history}
        affirmativeUsed="Yes"
        message="You have now completed your registration!"
        modalActive={true}
      />
    }
  </PrivateRoute>

提前感谢!

reactjs express routes react-router http-status-codes
1个回答
0
投票

并非如此。在您的React组件之一中点击/ confirmation端点,然后将结果存储在Redux存储中。然后,将需要访问该令牌的任何React组件连接到Redux存储。

© www.soinside.com 2019 - 2024. All rights reserved.