#reactjs #react-router-dom
Вопрос:
Я хочу проложить маршрут по другому пути, когда нажата кнопка Сохранить пароль(не кнопка). Я понятия не имею, как это реализовать, так как я не хочу использовать ссылку.
Я использую этот компонент в своей основной функции(app.js), но я думаю, что я должен реализовать маршрутизацию здесь, так как здесь также запрограммирован ввод отправки (Сохранение пароля).
Код:
import {Link, withRouter} from 'react-router-dom'
const AddPasswort = ({onChange}) => {
const[password, setPassword] = useState('')
const[repeatPW, setRepeatPW] = useState('')
const onSubmit = (e) => {
e.preventDefault();
if(!passwort){
alert('Please enter a new password')
return
}
else if(passwort !== repeatPW) {
alert('Your passwords do not match')
return
}
onChange({passwort, repeatPW})
setPassword('')
setRepeatPW('')
}
return (
<form className ='add-form' onSubmit={onSubmit} >
<div className='form-control'>
<label>Password</label>
<input type='password'
placeholder='Passwort...'
value={passwort}
onChange={(e) => setPassword(e.target.value)}/>
</div>
<div className='form-control'>
<label>Repeat Passwort</label>
<input type='password'
placeholder='Repeat Password...'
value={repeatPW} onChange={(e) => setRepeatPW(e.target.value)}/>
</div>
<input type = 'submit' value = 'Save Password' className= 'btn btn-block'/>
</form>
)
}
export default withRouter(AddPasswort);```
[1]: https://i.stack.imgur.com/70LzN.jpg
[2]: https://i.stack.imgur.com/NX5Fn.jpg
Ответ №1:
Вы можете использовать объект истории из react-маршрутизатора для перенаправления пользователя на другой маршрут с помощью history.push(path)
. У них также есть крючок истории использования, который вы можете использовать, если предпочитаете использовать крючки в этой ситуации.
Комментарии:
1. Мне пришлось использовать крючок истории использования, чтобы он работал на меня. Спасибо 😀
Ответ №2:
Сначала вам нужно импортировать useHistory()
крючок react-router-dom
, а затем сделать это:
import {Link, withRouter} from 'react-router-dom'
const AddPasswort = ({onChange}) => {
const[password, setPassword] = useState('')
const[repeatPW, setRepeatPW] = useState('')
// create a history object
const history = useHistory()
const onSubmit = (e) => {
e.preventDefault();
if(!passwort){
alert('Please enter a new password')
return
}
else if(passwort !== repeatPW) {
alert('Your passwords do not match')
return
}
onChange({passwort, repeatPW})
setPassword('')
setRepeatPW('')
// navigate to where you want
history.push("/your_path")
}
Удачи, дайте мне знать, если это сработает