javascript - React 路由器不重定向到组件

标签 javascript reactjs

我有一个主要组件,我已经初始化了一个路由器,我想将其重定向到登录组件,但是当我转到http://localhost:3000/login时它没有显示登录组件,它仍然显示App.js,可能是什么原因

APP.JS

import React, { Component } from 'react';
import './index.css';
import './styles.css';
import ReactDOM from 'react-dom';
import LoginComponent from './components/LoginComponent';
import { BrowserRouter as Router, Route } from 'react-router-dom'

class Apps extends Component {
    constructor(props) {
        super(props);
        // Don't do this!
        this.state = {
            showing: true,
            Login: false,
            Signup: false,
            Members: false
        };
    }

    render() {
        return (
            <div>
                <div className="container" style={{ display: (this.state.showing ? 'block' : 'none') }}>
                  <div >A Single Page web application made with react</div>
                </div>
                <LoginComponent view={this.state.Login} />
                <div className="buttons">
                    <a href='' ref="login" onClick={this.Login_onclick.bind(this)} >{this.state.Login? "back": "Login"}</a>
                </div>
                <Router>
                    <Route path="/login" component={LoginComponent}/>
                </Router>
            </div>
        );
    }

    Login_onclick(e) {
        this.setState({Login: !this.state.Login });
        e.preventDefault(); //alert(e.target.value);
        this.setState({showing: !this.state.showing});
        // this.setState({ref: !ref});
    }
}

export default Apps;

LoginComponent.js

class LoginComponent extends Component {
    constructor(props){
        super(props);
        this.state = ({details: {}});
    }

    componentDidMount() {
        // console.log('Component DID MOUNT!')
        this.ajaxloader();
    }

    ajaxloader() {
        fetch("./login.php")
          .then(res => res.json())
          .then(
            (result) => {
              console.log(result);
            });
    }

    render() {
        return (
            <div className="login" style={{ display: (this.props.view ? 'block' : 'none') }}>
                <h3>Login</h3><br/>
                Username: <input type="text" ref="username"/><br/>
                Password <input type="password" ref="password"/>
                <button value="Login" ref="login" >Login</button>
            </div>
        );
    }
}

export default LoginComponent;

最佳答案

 <Router>
  <switch>
    <Route path="/login" component={LoginComponent}/>
  </switch>
 </Router>

并确保从 react-router-dom 导入交换机,如下所示。

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

关于javascript - React 路由器不重定向到组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51165878/

相关文章:

reactjs - 测试期间从 React 自定义 Hook 读取属性时出错

javascript - React/Redux 应用程序中的 csrf 和 XSS 攻击

reactjs - 如何解决Reactjs中的 "Firebase: Error (auth/invalid-api-key)"错误?

javascript - 将 JavaScript 函数值转发到 C#

javascript - 为什么javascript有时会输出 undefined variable

javascript - 在 JavaScript 中设置关联数组

javascript - 在 Metro 应用程序中尝试连接到蓝牙 LE 设备时出现错误 80070005

javascript - 如何获取图片id

javascript - React JS 所见即所得保存

javascript - 项目在 2 台机器上共享时出现 Webpack 错误