反应路由器打开模式
React router open modal
我是 React 和 Redux 世界的新手。我有一个关于反应路由器的问题。以下是我的 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;
我的列表 class 如下所示:
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} />
我希望这会对某人有所帮助。
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;
在该组件中,您应该处理模态打开关闭。
我是 React 和 Redux 世界的新手。我有一个关于反应路由器的问题。以下是我的 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;
我的列表 class 如下所示:
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} />
我希望这会对某人有所帮助。
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;
在该组件中,您应该处理模态打开关闭。