vue поведение прокрутки маршрутизатора дает подсказку к значениям маршрута - PullRequest
1 голос
/ 02 марта 2020

У меня есть маршрут, который может иметь следующие параметры и запрос:

родительский маршрут: path: "/:locale(en|jp)?" маршрут товара: path: 'products/:category/:page?' запрос в продукте может быть:

{
  q:search string for filter,
  size:size value for filter,
  color:color value for filter,
  designer:designer value for filter
  sort:sort value
}

Пример приложения здесь

Мой вопрос заключается в том, что при изменении размера, цвета или дизайнера я хотел бы вернуть savedPosition из scrollBehavior , в любом другом случае он вернул бы {x:0,y:0}

Есть ли способ сделать это, не проверяя все значения запроса из to и from и не делая функцию scrollBehavior без надобности раздутой, а вместо этого передавая подсказку при нажатии на маршрут из функция, которая устанавливает цвет, размер или дизайнер?

1 Ответ

0 голосов
/ 02 марта 2020

Чтобы не создавать сложные логи c в scrollBehavior, я просто продолжаю возвращать {x:0,Y:0} и создал следующую функцию:

export const pushRoute = (route, component, keepScrollPosition = true) => {
  const pos = {
    top: window.scrollY,
    left: window.scrollX,
  };
  component.$router.push(route);

  if (keepScrollPosition) {
    Promise.resolve().then(
      () => { window.scrollTo(pos); },
    );
  }
};

Из моего компонента я вызываю его следующим образом:

pushRoute(
  {
    ...this.$route,
    query,
  }, this, true,
);
...