4
對於頁面具有內部路由的用例,即使在導航到可能不需要提示的內部路由時,也會觸發提示,請參閱代碼示例。有沒有辦法在導航到已知安全路線時禁用提示?在相同路徑內導航時提示
import React, {Component} from 'react';
import {BrowserRouter, Route, Switch, Link, Prompt} from 'react-router-dom';
export default class App extends Component {
render() {
return (
<BrowserRouter>
<Switch>
<Route component={About} path={"/about"}/>
<Route component={Home} path={"/"}/>
</Switch>
</BrowserRouter>
);
}
}
class Home extends Component {
constructor(props) {
super(props);
this.state = {input: 'hello?'}
}
render() {
return (
<div>
<h1>Home</h1>
<input value={this.state.input}
onChange={(e) => this.setState({input: e.target.value})}/><br />
<Link to={"/info"}>More Info</Link><br />
<Link to={"/about"}>About Page</Link><br />
{/*Triggers even when going to /info which is unnecessary*/}
<Prompt message="Move away?" when={this.state.input !== 'hello?'}/>
<Route path={"/info"} component={Info}/>
</div>
);
}
}
class About extends Component {
render() {
return (
<h1>About page</h1>
);
}
}
class Info extends Component {
render() {
return (
<p>Here be some more info</p>
);
}
}
在上面的例子中,關於是一個不同的頁面,因此,當輸入已經改變應該觸發,它正確地做。但是/ info路由是Home的內部路由,所以不需要提示,導航後Home的內部狀態會被保留,所以不會丟失任何內容。
這裏的實際使用案例是在路由處於活動狀態時顯示模式,但主要是CSS內容,所以我將它排除在示例之外。
愚蠢的我,一定是錯過了那部分文檔。謝謝!它的確解決了我的問題。 – Karagoth