[React.js] Программный переход по УРЛ
Пока не могу понять как програмно выполнить переход на некий УРЛ в пределах приложения.
Т.е. у нас есть роутинг по страницам, работает нормально (пример могу предоставить в понедельник)... По <Link> переход работает. Но теперь нужно отработать событие нажатия на кнопку. Там идет отправка запросов на сервер и в случае успеха нужно выполнить переход на некую страницу (в пределах приложения SPA). Нашел старые варианты, но они не рабочие (типа этого) https://reactdev.ru/router/programmiruem_perehodi/ |
Шо?
const H = useHistory();
H.push('/foo')
Это еся юзается react-router. Мож у тя какой-то другой роутер? |
Цитата:
Используем react-router или react-router-dom. Цитата:
|
Цитата:
https://xakplant.ru/2019/07/16/ис...а-и-фун/ |
Вот еще нашел видос и это и есть наш случай! :D
https://www.youtube.com/watch?v=VBw3EOtmz-k У нас react-router-dom используется и роутинг как раз такой же. Т.ч. завтра ребятам покажу - пусть пробуют. Спасибо. :thanks: |
Провел ряд тестов "в поисках history"... :D
Если делать так app.js
import React from 'react'
import {
BrowserRouter,
Route,
Switch
} from 'react-router-dom'
import Home from './home'
import Test from './test'
import './app.css';
class App extends React.Component {
render() {
return (
<BrowserRouter>
<Switch>
<Route exact path='/' component={Home}/>
<Route path='/test' component={Test} />
</Switch>
</BrowserRouter>
)
}
}
export default App;
home.js
const Home = (props) => {
console.log(props)
function test() {
alert('Ok')
}
return (
<button onClick={test}>Go</button>
)
}
export default Home
То history в props есть и можно делать
history.push('/test')
У нас же используется такой вариант роутинга app.js
import React from 'react'
import {
BrowserRouter,
Route,
Switch
} from 'react-router-dom'
import Home from './home'
import Test from './test'
import './app.css';
class App extends React.Component {
constructor(props) {
super(props)
this.state = {primer: '123'}
}
render() {
return (
<BrowserRouter>
<Switch>
<Route exact path='/'>
<Home data={this.state} />
</Route>
<Route path='/test' component={Test} />
</Switch>
</BrowserRouter>
)
}
}
export default App;
И history уже нам не доступно. :( |
Цитата:
home.js
import {useHistory} from 'react-router-dom'
const Home = (props) => {
console.log(props)
const h = useHistory()
function test() {
h.push('/test')
}
return (
<button onClick={test}>Go</button>
)
}
export default Home
|
| Часовой пояс GMT +3, время: 00:39. |