首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React js组件呈现

React js组件呈现
EN

Stack Overflow用户
提问于 2019-11-27 02:48:34
回答 3查看 75关注 0票数 0

您好,我现在开始在react中,我有点困惑,我使用路由/私有路由,所以我创建了一个components文件夹,我将在其中放置我的登录组件和我的login / index.js文件夹,我将在其中导入此组件,但我不确定有什么更好的方法来完成此操作:

我的app.js:

代码语言:javascript
复制
import React, { Component } from 'react';
import './App.css';

import Routes from './routes';

function App() {
  return (
          <Routes/>
  );
}

export default App;

我的路由js:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

代码语言:javascript
复制
import React, { Component } from 'react';
import loginComp from '../../components/LoginForm';


class Login extends Component {
    render() {
      return (
          <loginComp />
      )
    }
  }

  export default Login;

我没有错误,但它不会在屏幕上呈现任何内容

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-27 13:33:32

由于<loginComp/>不是您在LoginPage中创建的组件,因此它不会呈现数据。您可以简单地更改

代码语言:javascript
复制
   import loginComp from '../../components/LoginForm';

to  import LoginForm from '../../components/LoginForm'; 

记住/components/LoginForm这是您保存的文件名,而不是您创建的组件。

代码语言:javascript
复制
 render() {
      return (
          <LoginForm/>
      )
    }

这可能会解决你的问题。

票数 0
EN

Stack Overflow用户

发布于 2019-11-27 02:54:38

看起来你这里有一个拼写错误:<ionChange} placeholder="Informe sua senha"/>,并且你重新粘贴了代码的底部。

假设这是一个错误并成功编译,您只需要底层的export default,并确保到该文件的路径是正确的。

票数 0
EN

Stack Overflow用户

发布于 2019-11-27 03:03:14

./pages/login不存在,我相信您已将登录文件命名为LoginForm

另外,我很确定。在BrowserRouter中需要一个div,如下所示:

代码语言:javascript
复制
export default function Routes(){
    return(
        <BrowserRouter>
          <div>
            <Switch>
                <Route path="/" exact component={Login}/> 
                <PrivateRoute path="/home" component={DashBoard}/>              
            </Switch>
          </div>
        </BrowserRouter>
    );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59057583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档