Flowrouter - необходимо перезагрузить всю страницу для распознавания маршрута

Довольно простая настройка - пользователь отправляет сообщение, оно вставляется методом, затем пользователь должен быть перенаправлен на страницу подтверждения с _id вновь созданного сообщения:

const onSubmitPost = (post) => {
      createPost.call(post, (err, res) => {
        if(err) {
          instance.errorMessage.set(err.reason);
        } else {
          FlowRouter.go("create-post/:postId/confirm", { postId: res });
      }
   });
};

// Route definition    
FlowRouter.route("/create-post/:postId/confirm", {
  name: "create-confirm",
  action() {
    BlazeLayout.render("MainPage", { content: "ConfirmPostContainer" });
  }
});

Но когда я пытаюсь это сделать, я получаю There is no route for the path: create-post/abc123/confirm

Если я вручную нажимаю перезагрузку, все работает нормально - никаких проблем.

Кто-нибудь знает, что происходит и как это исправить?

ПРАВКИ

  • Это вызывается на маршруте /create-post — перенаправление для подтверждения сообщения после его создания.
  • Добавлено определение маршрута
  • Пробовал использовать redirect вместо go - без разницы

person rubie    schedule 24.06.2017    source источник
comment
Вы можете показать определение маршрута create-post? а также по какому маршруту вы идете, когда вызываете метод?   -  person tomsp    schedule 25.06.2017
comment
@tomsp сделано! Он вызывается из базового маршрута create-post. И я знаю, что многие многие люди имеют проблемы с инициализацией FR, где нет маршрута для пути /, но все мои другие маршруты работают нормально.   -  person rubie    schedule 25.06.2017
comment
Сейчас я просматриваю все пакеты, чтобы увидеть, нет ли конфликта с другим пакетом, использующим более старую версию FlowRouter, но мне это кажется маловероятным.   -  person rubie    schedule 25.06.2017


Ответы (2)


Есть 2 вещи, которые я могу предложить вам попробовать. Я предполагаю, что проблема связана с вызовом метода .go из /create-post с относительным путем.

Итак, сначала попробуйте имена маршрутов: FlowRouter.go('create-confirm', { postId: res });

Во-вторых, попробуйте абсолютные пути: FlowRouter.go('/create-post/' + res + '/confirm'); — обратите внимание на косую черту / в начале!

Это работает?

person tomsp    schedule 25.06.2017
comment
Ух ты! оба этих подходов работают. Что очень странно, так как это не сработало при использовании redirect. Для меня не имеет смысла, что это должно произойти, поскольку два маршрута отображают разные шаблоны контейнеров. Но спасибо - хотел бы я дать два голоса за два решения! - person rubie; 26.06.2017

попробуйте FlowRouter.redirect (ИМЯ МАРШРУТА, {postId: res}

person Potato    schedule 24.06.2017
comment
К сожалению, это не работает. redirect на самом деле принимает URL-адрес, поэтому пришлось выполнить FlowRouter.redirect(create-league/${res}/confirm);, но в консоли появилось то же сообщение об ошибке - нет маршрута для пути... - person rubie; 25.06.2017
comment
извините, моя ошибка FlowRouter.redirect (ИМЯ ВАШЕГО МАРШРУТА, {postId: res}) - person Potato; 29.06.2017
comment
есть идеи, почему это происходит? - person rubie; 30.06.2017