我是新来的反应世界。我有一个关于反应路由器的问题。以下是我的App组件。
class App extends React.PureComponent {
render() {
return (
<div>
<Switch>
<Route exact path="/" component={HomePage} />
<Route exact path="/callback" component={CallbackPage} />
<Route exact path="/list" component={List} />
<Route component={NotFoundPage} />
</Switch>
</div>
);
}
}
export default App;
我的列表类如下:
export class List extends React.PureComponent {
constructor(props) {
super(props);
this.state = {
isOpen: false,
};
this.depositHandleToggle = this.depositHandleToggle.bind(this);
}
depositHandleToggle = () => {
this.props.dispatch(push(`${this.props.match.url}/deposit`));
}
render() {
const { match } = this.props;
return (
<div>
<Route path={`${match.url}/deposit`} component={Modal} />
<button onClick={this.depositHandleToggle}>Open Modal</button>
</div>
);
}
}
export default List;
所以我的问题是:当我单击列表容器中的按钮时,为什么我的路由器找不到此URL'localhost:xxx / list / deposit'?它呈现了App组件,但从未返回到List组件。列表容器中是否可以包含自定义路由?难道我做错了什么?请有人帮我解决这个问题。
希望您能理解我的问题。提前致谢。
答案:
我找到了答案,问题出在我的App组件列表路由中。我有'exact'关键字,这就是为什么列表组件内部的路由不起作用的原因。遵循方式是正确的方式。
<Route path="/list" component={List} />
我希望这会对某人有所帮助。
答案 0 :(得分:1)
import { Link } from 'react-router-dom';
class App extends React.PureComponent {
render() {
return (
<div>
<Switch>
<Route exact path="/" component={HomePage} />
<Route exact path="/callback" component={CallbackPage} />
<Route exact path="/list" component={List} />
<Route exact path="/list/deposit" component={Modal} />
<Route component={NotFoundPage} />
</Switch>
</div>
);
}
}
export default App;
export class List extends React.PureComponent {
constructor(props) {
super(props);
}
render() {
const { match } = this.props;
return (
<div>
<Link to={'/deposit'}>Open Modal</Link>
);
}
}
export default List;
在该组件中,您应该处理模式打开关闭。