#reactjs #next.js
#reactjs #next.js
Вопрос:
Я создаю приложение для викторины, в нем три страницы (младшая, старшая, СуперСениор). основываясь на раскрывающемся списке, выбранном пользователем на домашней странице, я хочу перенаправить пользователя на соответствующие страницы.
То, что я делаю, это создаю общий компонент verify.js и перенаправить пользователя.
В verify.js
const verify = ({router: {query}}) => {
const router = useRouter()
useEffect(() => {
if(query.level === 'junior') return router.push('/junior')
if(query.level === 'senior') return router.push('/senior')
if(query.level === 'superSenior') return router.push('/super-senior')
})
return <h1>Loading...</h1>
}
Проблема в том, что я не могу снова вернуться на домашнюю страницу. Когда я однажды выбрал.
Комментарии:
1. перепроверьте написание первой строки 1: «qery» и строки 5: «useEfect».
2. используйте
router.replace
вместо push, поэтому всякий раз, когда вы нажимаете назад, он переходит на 2-й последний в истории
Ответ №1:
Самый простой способ перенаправить пользователя на разные маршруты вы можете использовать перенаправление, поставляемое с react-router, и самый простой — это перехват useHistory.
Я приведу пример хука useHistory
import {useHistory} from 'react-router-dom'
const history = useHistory()
const verify = ({router: {query}}) => {
const router = useRouter()
useEffect(() => {
if(query.level === 'junior'){ history.push('/junior') }
if(query.level === 'senior'){ history.push('/senior') }
if(query.level === 'superSenior'){ history.push('/super-senior') }
})
return <h1>Loading...</h1>
}