gpt4 book ai didi

javascript - ReactJS 中的路由。 URL已显示,但组件未呈现

转载 作者:行者123 更新时间:2023-12-01 01:31:10 26 4
gpt4 key购买 nike

我的父组件中有以下代码:

class App extends Component {
render() {
return(
<Router>
<div>
<Route exact path='/' component={Main} />
<Route path="/login" component={Login} />
</div>
</Router>
);
}}

这在主要组件中:

import React, { Component } from "react";
import {BrowserRouter as Router, Route, Link } from 'react-router-dom'

class Main extends Component {

render() {
return (
<Router>
<section className="section main">
<div className="container">
<div className="main-titles-container">
<div className="main-titles">
<div className="yellow-square"></div>
<h1>Title</h1>
<p>
Introduction
</p>
<div className="button-container">
<Link to='/login' className="btn select bg-yellow" id="buyer">Next</Link>
</div>
</div>
</div>
</div>
</section>
</Router>
);
}
}

export default Main;

登录:

import React, { Component } from 'react';

class Login extends React.Component {
constructor(props) {
super(props);
this.state = {
email: "",
cellphone: ""
}

this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}

handleChange(e) {
const target = e.target;
this.setState({
[target.name]: target.value
});
}


handleSubmit(e) {
e.preventDefault();
console.log(this.state);
}

render() {
return (
<section className="section">
<div className="container center center-xy">
<h1 className="title center-self">Title</h1>
<h1 className="title center-self">Log in</h1>
<div className="form-container">
<form onSubmit={this.handleSubmit}>
<label htmlFor="email">Email</label>
<input type="text" name="email" id="email" onChange={this.handleChange} defaultValue="" required/>
<label htmlFor="cellphone">Cell phone</label>
<input type="text" name="cellphone" id="cellphone" defaultValue="" onChange={this.handleChange} required/>
<button className="bg-yellow center-self" type="submit">Ok</button>
</form>
</div>
</div>
</section>
);
}
}

export default Login;

单击时我想重定向到登录页面,但问题是当我单击该“按钮”时,URL 更改为“/login”,但未呈现相应的组件。但是,如果我使用“/login”url 刷新页面,则会呈现该组件。感谢您提前提供的任何帮助!

编辑:我没有使用 PureComponent 并且将导出包装在 withRouter 中也不能解决我的问题。

最佳答案

您应该只让顶级组件(在您的例子中为App)呈现Router 组件。该组件下的所有组件(例如 Main)在渲染函数中不应有 Router。它们将继承父级的Router。您仍然可以在子组件内部使用 LinkRoute 组件,它们将导航父 Router

关于javascript - ReactJS 中的路由。 URL已显示,但组件未呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53260609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com