#reactjs #next.js #next-router
Вопрос:
Я использую next js для своего приложения, и у меня возникли некоторые проблемы с маршрутизацией на предыдущий маршрут приложения. Я знаю о функции маршрутизатора back (), которая похожа на window.history.back (), я хотел бы вернуться к маршруту при нажатии на ссылку, и если предыдущая ссылка не из моего приложения или равна нулю, я хотел бы перейти на домашнюю страницу по умолчанию.
Я использовал такие библиотеки, как react-router-last-location для своего приложения react, но я хочу посмотреть, есть ли лучшие способы сделать это в next js через next/router.
Вот мой пример кода:
<div className={styles['icon-container']}>
<Link href="/"><a>
<img src="icon.svg"></img>
</a></Link>
</div>
если я использую router.back() при вводе ссылки, страница автоматически возвращается еще до ее загрузки, как мне решить эту проблему?
Комментарии:
1. Не могли бы вы добавить дополнительную информацию о случае использования, т. е. о том, почему вы хотите это сделать. Это поможет людям дать более полные ответы. 🙂
2. Я не понимаю вашего варианта использования и/или требований, но я думаю, что перехват задней навигации для удержания пользователей в вашем приложении-это довольно плохой UX. Мне хотелось бы думать, что я не одинок в своих мыслях, если я случайно зашел в ваше веб-приложение и сразу же попытался вернуться и постоянно перескакивать на вашу домашнюю страницу, которую я больше никогда не захочу посещать.
3. Нет, я не похищаю заднюю навигацию! Это пользовательская кнопка «Назад», которая будет присутствовать на моем сайте, чтобы они могли просмотреть сообщение и вернуться в ленту!
Ответ №1:
<Link>
не могу выйти за пределы вашего приложения. (но router.back()
может)
Вы не можете использовать router.back()
непосредственно в коде, вам нужно сделать что-то вроде :
<img onClick={() => router.back()} src="icon.svg" />
<Link>
не имеет свойства onClick.
import { useRouter } from 'next/router'
export default function Page() {
const router = useRouter()
return (
<button type="button" onClick={() => router.back()}>
Click here to go back
</button>
)
}
Источник информации здесь
Комментарии:
1. Как этот код предотвращает обратную навигацию из приложения и перенаправляет на домашнюю страницу вместо этого?
2. На самом деле не знаю, с маршрутизатором вы не можете этого сделать. Вам нужно проверить .sessionStorage или .localstorage