我对此的react 是新的. 我有两个组件:Login.js和Signup.js.

从Login.js,我点击一个按钮"注册",我想启动注册组件作为新的屏幕,它应该占据整个区域.

Index.js:

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import Login from './components/Login';

import reportWebVitals from './reportWebVitals';
import {BrowserRouter, HashRouter} from "react-router-dom" 

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <HashRouter>
    <Login />
  </HashRouter>,

);
reportWebVitals();

登录.js:

import React, { Component } from 'react';
import "../styles.css";
import SignUp from './SignUp';


export default class Login extends Component {

  constructor(props){
    super(props);
    this.state = {errorMessages : {},
              isSubmitted : false,
                isShown : false
              };
    this._onButtonClick = this._onButtonClick.bind(this);
  }
  _onButtonClick() {
    this.setState({isShown : true});
  }

render() {
    const signUp = (
      <div>
         <label>Not Registered Yet? </label>
         <div>
            <button onClick={this._onButtonClick}>Button</button>
            {this.state.isShown ? <SignUp /> :null}
         </div>
    
      </div>  
    );



  return (
    <div className="app">
        <div className='image'>
            <img src="/Logo.png" alt="image" />   
        </div>
        <div>{signUp}</div>
      <div className="login-form">
        <div className="title">Sign In</div>
        {this.state.isSubmitted ? <div>User is successfully logged in</div> : renderForm}
      </div>
    </div>
  );
}

登录组件用户界面使用renderForm显示,其中包含简单的输入字段和提交按钮.此外,这个屏幕包含注册按钮,点击它我想启动注册组件. 目前,注册屏幕[包含仅有3个输入字段的表单]仅显示在登录组件/屏幕的顶部.

我想将注册组件显示为新屏幕,这样登录屏幕就看不到了. 怎么做呢?

谢谢

推荐答案

屏幕之间的导航通常是通过路由系统完成的,例如React Router.您可以设置如下路由:

<Routes>
  <Route path="/" exact element={<Home />} />
  <Route path="/login" element={<Login />} />
  <Route path="/signup" element={<SignUp />} />
</Routes>

您可以使用Link个组件作为按钮,例如,移动到注册组件:

<Link to="/signup">Sign Up!</Link>

或者,如果这是一个非常琐碎的应用程序或学习练习,那么您可以简单地在App中保持某种状态,以跟踪哪个组件当前处于活动状态.此状态可用于根据需要显示/隐藏零部件.

Reactjs相关问答推荐

使用useEffect挂钩获取数据

从另一个组件更改组件中const的状态

如何创建react router v6的自定义子路由?

两条react 路由的行为不同.有没有人能解释一下,我已经找了好几天了

如何在MUI X数据网格列中显示IMG?

在transformResponse中使用来自其他查询的缓存

Reaction路由-如何在布局路由内呈现&q;/:id&q;路由

在任何渲染之前在ReactJs中获取数据

React router v5 仅在生产中不适用于嵌套路由

ReactJS中使用setState方法时,Context内部的State未进行更新

将水平滚动视图添加到底部导航选项卡

VideoSDK api 不使用更新状态

React - 拖放 UML

如何在 React 中使用 debounce hooks

react 事件顺序

Cypress ,重试不再附加到 DOM 的元素

如何跟踪 dexie UseLiveQuery 是否完成

在状态中存储多个选定的选项

调用函数以获取数据并在数据到达时导航到链接

如何从另一个切片中的不同切片获取状态并对其进行处理?