Редирект в реагирующем маршрутизаторе вызывается только в клиенте, но не обнаруживается на сервере (React SSR) - PullRequest
0 голосов
/ 12 апреля 2020

Я использую <Redirect to="/" /> после отправки формы. Он перенаправляет на домашнюю страницу. Однако на стороне сервера с использованием express app.get(*) ничего не обнаружено.

client. js

formSubmit(){
  //validation
  //change state to loggedIn is true
}

render(){
  return(){
     this.state.loggedIn? (<Redirect to="/"></Redirect>):( // render component )
  }
}

server. js

app.get("*", (req, res) => {
    const store = createStore(req);
    const promises = matchRoutes(Routes, req.path).map(({ route }) => {
      return route.loadData ? route.loadData(store,req.universalCookies.get('session')) : null;
    }).map(promise => {
        if (promise){
            return new Promise((resolve,reject) => {
                  promise.then(resolve).catch(resolve);
            });
        }
    });

    Promise.all(promises).then(() => {
      const context = {};
      const content = renderer(req, store, context);
      if(context.url){
           return res.redirect(301,context.url);
      }
      if (context.notFound) {
        res.status(404);
      }
      res.send(content);
    });
  });

Однако внутри ничего не называется. Итак, мой вопрос, как я могу заставить сервер обнаруживать это перенаправление?

...