【发布时间】:2018-05-20 11:01:29
【问题描述】:
我正在尝试为我的 react 应用设置登录功能。一旦用户登陆登录页面,它的底部就会有一个按钮,上面写着“注册”。当我单击该链接时,它会正确更新 URL 并在 URL 中显示“/register”,但注册组件未呈现。在更传统的路由中,我会设置一个路由配置来指示所有路由的去向,但据我了解,react router 4 正在远离它。通过阅读文档和一些示例,我认为只是把 路由路径=“/注册”组件={注册} 足以告诉 Link 标记要呈现哪个组件,但似乎并非如此。我正在使用“反应路由器”:“^4.2.0”
登录.js
import React from 'react';
import LoginForm from '../components/LoginForm';
const Login = () => (
<div>
<LoginForm></LoginForm>
</div>
);
export default Login;
LoginForm.js
import React, { Component } from 'react';
import { render } from 'react-dom';
import TextField from 'material-ui/TextField';
import RaisedButton from 'material-ui/RaisedButton';
import { Link, Route } from 'react-router-dom';
import Register from "../pages/Register";
class LoginForm extends Component {
constructor(props) {
super(props);
this.state = {
error: ''
}
}
onSubmit(e) {
e.preventDefault();
this.setState({
error: 'Something went wrong.'
})
}
render() {
return (
<form>
{ this.state.error ? <p>{this.state.error}</p> : undefined }
<TextField type="email" name="email" hintText="Email" fullWidth={true} />
<TextField type="password" name="password" hintText="Password" fullWidth={true} />
<RaisedButton label="Login" primary={true} style={buttonStyles} onClick={this.onSubmit.bind(this)} />
<p style={text}>No account?<Link to="/register"> Sign up</Link></p>
<Route path="/register" component={Register}></Route>
</form>
)
}
}
export default LoginForm;
注册.js
import React from 'react';
import RegisterForm from '../components/RegisterForm';
const Register = () => (
<div>
<RegisterForm></RegisterForm>
</div>
);
export default Register;
RegisterForm.js
import React, { Component } from 'react';
import { render } from 'react-dom';
import TextField from 'material-ui/TextField';
import RaisedButton from 'material-ui/RaisedButton';
import { Link } from 'react-router-dom';
class RegisterForm extends Component {
constructor(props) {
super(props);
this.state = {
error: ''
}
}
onSubmit(e) {
e.preventDefault();
this.setState({
error: 'Something went wrong.'
})
}
render() {
return (
<form>
{ this.state.error ? <p>{this.state.error}</p> : undefined }
<TextField type="name" name="name" hintText="Name" fullWidth={true} />
<TextField type="email" name="email" hintText="Email" fullWidth={true} />
<TextField type="password" name="password" hintText="Password" fullWidth={true} />
<RaisedButton label="Register" primary={true} onClick={this.onSubmit.bind(this)} />
</form>
)
}
}
export default RegisterForm;
【问题讨论】:
-
我忘了从问题中删除它。我去掉了我必须使所有内容更短、更易于阅读的内联样式。我在控制台中没有收到任何错误,所以我知道它与我的内联样式无关。
标签: javascript reactjs routing react-router