Можно ли изменить URL-адрес без перезагрузки страницы? - PullRequest
0 голосов
/ 17 января 2020

В моем приложении в определенный момент я получаю несколько параметров запроса из обратного вызова. Мне нужно сохранить их в хранилище избыточных данных, и после этого перенаправления пользователю на странице и мне нужно изменить URL-адрес без перезагрузки страницы.

На самом деле я использую history.replaceState. Это работает, но если я go на другом маршруте (мои внутренние маршруты), он объединяет фактическую ссылку с фактическим (замененным)

Ответы [ 2 ]

2 голосов
/ 17 января 2020

Код в функции reload - это stati c, т.е. он будет выполняться только при его вызове. Если во время вызова ширина окна не превышает 1000 пикселей, ваша функция ничего не сделает.

Вместо этого вам нужно прослушать событие resize:

window.location.replace(window.location)
0 голосов
/ 17 января 2020

Я не использую приставку (используя mobx), но обычно использую приведенный ниже код для обновления URL-адреса без обновления страницы.

Эта первая часть прослушивает URL-адрес из второго фрагмента @computed get url() и автоматически обновляет URL-адрес при его изменении.

autorun(() => {
    const path = store.navigation.url
    if (path !== window.location.pathname) {
        window.history.pushState(null, null, path)
    }
})

И эта часть просто для того, чтобы выяснить, что добавить в url ex: нажмите вкладку, которая изменяет значение @observable view: View = "home" на @observable view: View = "hooks" URL перейти с site.com на site.com/hooks

@observable view: View = "home"
......
@computed get url() {
        switch (this.view) {
            case "home":
                return '/'
            case "hooks":
                return 'hooks'
            case "fields":
                return "fields"
            case "validation":
                return 'validation'
            case "reusable":
                return 'reusable'
            case "profile":
                return 'profile'
            case "userProfile":
                return 'userProfile'
            case "review":
                return 'review'
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...