您好,我现在开始在react中,我有点困惑,我使用路由/私有路由,所以我创建了一个components文件夹,我将在其中放置我的登录组件和我的login / index.js文件夹,我将在其中导入此组件,但我不确定有什么更好的方法来完成此操作:
我的app.js:
import React, { Component } from 'react';
import './App.css';
import Routes from './routes';
function App() {
return (
<Routes/>
);
}
export default App;我的路由js:
export default function Routes(){
return(
<BrowserRouter>
<Switch>
<Route path="/" exact component = {Login}/> //só chama rota se o caminho for exato;
<PrivateRoute path="/home" component = {DashBoard}/>
</Switch>
</BrowserRouter>
);
}我的组件/ LoginForm:
import React, { Component } from 'react';
class LoginForm extends Component {
constructor(props){
super(props);
this.state = {
login:'',
password:'',
errors: {},
isLoading: false
};
this.onSubmit = this.onSubmit.bind(this);
this.onChange = this.onSubmit.bind(this);
}
onSubmit(e){
e.preventDefault();
}
onChange(e){
this.state({[e.target.name]: e.target.value});
}
render() {
const { errors, login, password, isLoading } = this.state;
return (
<form onSubmit={this.onSubmit}>
<label for="login">Login</label>
<input type="text" id="login" value={login} error= {errors.login} onChange={this.onChange} placeholder="Informe seu login" />
<label for="password">Senha</label>
<input type="password" id="password" value={password} error= {errors.password} onChange={this.onChange} placeholder="Informe sua senha"/>
<button className="btnEnt" type="submit" disabled ={isLoading}>Entrar</button>
</form>
)
}
}
export default LoginForm;现在我有疑问了,因为我将从登录页面调用index.js文件中的登录组件
index.js
import React, { Component } from 'react';
import loginComp from '../../components/LoginForm';
class Login extends Component {
render() {
return (
<loginComp />
)
}
}
export default Login;我没有错误,但它不会在屏幕上呈现任何内容
发布于 2019-11-27 13:33:32
由于<loginComp/>不是您在LoginPage中创建的组件,因此它不会呈现数据。您可以简单地更改
import loginComp from '../../components/LoginForm';
to import LoginForm from '../../components/LoginForm'; 记住/components/LoginForm这是您保存的文件名,而不是您创建的组件。
render() {
return (
<LoginForm/>
)
}这可能会解决你的问题。
发布于 2019-11-27 02:54:38
看起来你这里有一个拼写错误:<ionChange} placeholder="Informe sua senha"/>,并且你重新粘贴了代码的底部。
假设这是一个错误并成功编译,您只需要底层的export default,并确保到该文件的路径是正确的。
发布于 2019-11-27 03:03:14
./pages/login不存在,我相信您已将登录文件命名为LoginForm
另外,我很确定。在BrowserRouter中需要一个div,如下所示:
export default function Routes(){
return(
<BrowserRouter>
<div>
<Switch>
<Route path="/" exact component={Login}/>
<PrivateRoute path="/home" component={DashBoard}/>
</Switch>
</div>
</BrowserRouter>
);
}https://stackoverflow.com/questions/59057583
复制相似问题