Я создаю веб-сайт, который похож на Facebook или любой другой веб-сайт, который, как я видел, работает маршруты или, возможно, даже больше, мне нужно передать информацию на следующий экран маршрута, когда я на новую страницу, например: (Я в
Затем перейдите на www.website.com/page1 и перейдите на www.website.com/page1/page2), пока данные, передаваемые через штат, говорят, что я хочу указать дату или имя, но не хочу, чтобы они отображались в URL. Итак, я обнаружил, что реакция может пройти с:
<Link {to={pathname:"/page2", state:{statetopass:datatopass}}}>
Однако, когда я прохожу состояние, когда нахожусь (www.website.com/page1/page2), я не могу читать данные только при обновлении, что, как мне кажется, странно, я когда-нибудь увижу переданные данные Я читал, что история изменчива, но я не могу понять, что это значит, возможно, это как-то связано с моей проблемой.
Код, который я пробовал до сих пор, находится здесь:
<-------------------- APP ------------------------- ->
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Switch, IndexRoute, HashRouter } from 'react-router-dom';
import Page1 from './Page1'
import Page2 from './Page2'
import { createBrowserHistory } from "history";
const history = createBrowserHistory();//idk if history should be here seems
class App extends Component {//to make no difference
constructor(props) {
super(props);
this.state = {
}
}
render() {
return (
<Router>
<Switch>
<Route exact path='/hom/Page1' component={({ match }) => { return (<Page1 />) }} />
<Route exact path='/hom/Page1/Page2' component={({ match }) => { return (<Page2 />) }} />
</Switch>
</Router>
)
}
}
export default App;
<-------------------- Page1 ----------------->
import React, { Component } from 'react';
import { Link } from 'react-router-dom'
class Page1 extends Component {
constructor(props) {
super(props);
this.state = {}
}
render() {
return (
<div>
<Link to={{
pathname: `Page1/Page2`,
state: { dataneed: "testme" }
}}><button>Check </button>
</Link>
</div>
)
}
}
export default Page1;
<------------------------------- Page2 -------------- --------------->
import React, { Component } from 'react';
import { createBrowserHistory } from "history";
const history = createBrowserHistory();
class Page2 extends Component {
constructor(props) {
super(props);
this.state = {}
}
render() {
console.log(history.location.state.dataneed)
return (
<div>
<h1>{history.location.state.dataneed}</h1>
</div>
)
}
}
export default Page2;
Итак, вы увидите, что сначала вы получаете сообщение об ошибке, а затем, как только вы обновляете, вы видите отображаемый текст. Если бы кто-нибудь мог предложить лучший способ сделать то, что я пытаюсь, и если бы кто-нибудь мог помочь мне пролить свет на этот вопрос, я был бы очень признателен за это.
PS: я использую версию 4.3.1, есть видео, но они используют версию ниже 4.0 и совершенно другие.