简体   繁体   English

如何将 useState state 传递给另一个组件?

[英]How to pass useState state to another component?

There are two components有两个组成部分

WelcomePage.jsx欢迎页面.jsx

import { useState } from "react";

import SignUpPage from "./SignUpPage";

function WelcomePage() {
  const [signUp, toSignUp] = useState(false);

  function signUpClick() {
    toSignUp(true);
  }

  return (
    <div>
      {signUp ? (
        <SignUpPage isOpen={signUp} />
      ) : (
        <div
          className="Welcome_page__container animate__animated animate__fadeIn"
          id="welcome_page"
        >
          <h1 className="Welcome_page__title">Welcome to Hotel Review </h1>
          <h3 className="Welcome_page__subtitle">Sign in :</h3>
          <div className="Welcome_page__wrapper">
            <label className="Welcome_page__input-title" htmlFor="welcome_mail">
              E-mail:
            </label>
            <input
              className="Welcome_page__input"
              id="welcome_mail"
              type="mail"
              placeholder="Your e-mail..."
            />
            <label className="Welcome_page__input-title" htmlFor="welcome_pass">
              Password:
            </label>
            <input
              className="Welcome_page__input"
              id="welcome_pass"
              type="text"
              placeholder="Your password..."
            />
            <button className="Welcome_page__btn">Login</button>
            <button className="Welcome_page__btn" onClick={signUpClick}>
              Sign Up
            </button>
          </div>
        </div>
      )}
    </div>
  );
}

export default WelcomePage;

SignUpPage.jsx注册页面.jsx

function SignUpPage() {
  return (
    <div className="Welcome_page__container animate__animated animate__fadeIn">
      <button>Back...</button>
      <h1 className="Welcome_page__title">Welcome to Hotel Review </h1>
      <h3 className="Welcome_page__subtitle">Sign up :</h3>
      <div className="Welcome_page__wrapper">
        <label className="Welcome_page__input-title" htmlFor="welcome_mail">
          E-mail:
        </label>
        <input
          className="Welcome_page__input"
          id="welcome_mail"
          type="mail"
          placeholder="Your e-mail..."
        />
        <label className="Welcome_page__input-title" htmlFor="welcome_pass">
          Password:
        </label>
        <input
          className="Welcome_page__input"
          id="welcome_pass"
          type="text"
          placeholder="Your password..."
        />
        <label
          className="Welcome_page__input-title"
          htmlFor="welcome_pass"
        ></label>
        <input
          className="Welcome_page__input"
          id="welcome_pass_repeat"
          type="text"
          placeholder="Repeat password..."
        />
        <button className="Welcome_page__btn_2">Sign Up</button>
      </div>
    </div>
  );
}

export default SignUpPage;

Clicking the "Sign Up" button in WelcomePage.jsx using useState navigates to SignUpPage.jsx使用 useState 单击 WelcomePage.jsx 中的“注册”按钮导航到 SignUpPage.jsx

Question - How can I return back to WelcomePage.jsx on the "Back" button (I understand that I need to return false back to const [signUp, toSignUp] = useState(), but I don't know how to transfer state from WelcomePage to SignUpPage and vice versa.)问题 - 如何在“后退”按钮上返回 WelcomePage.jsx(我知道我需要将 false 返回到 const [signUp, toSignUp] = useState(),但我不知道如何将 state 从WelcomePage 到 SignUpPage,反之亦然。)

You can pass it via props from parent to child component.您可以通过道具将其从父组件传递到子组件。 And pass the setState from child component to parent.并将 setState 从子组件传递给父组件。

import { useState } from "react";

import SignUpPage from "./SignUpPage";

function WelcomePage() {
  const [signUp, setSignUp] = useState(false);

  function signUpClick() {
    toSignUp(true);
  }

  return (
    <>
      {signUp ? (
        <SignUpPage isOpen={signUp} setOpen={setSignUp} />
      ) : (
        <div>
           ... component
        </div>
      )
    </>
  );
}

export default WelcomePage;
function SignUpPage(props) {
  const { isOpen, setOpen } = props;

  return (
    <>
      {isOpen}
      <button onClick={setOpen(true)}>Open</button>
      <button onClick={setOpen(false)}>Close</button>
    </>
  );
}

export default SignUpPage;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将useState设置状态函数传递给打字稿中的子组件? - how to pass useState set state function to a child component in typescript? 如何将 useState 从一个组件传递到另一个组件? - How do I pass useState from one component to another? 将 useState state 传递给 React 中的路由器组件 - Pass useState state to router component in React 如何将值从状态传递到另一个组件 - How to pass values from a state to another component 如何通过 state 在 useNavigate 到另一个组件 - How to pass state in useNavigate to another component 如何将一个文件组件的状态 (useState) 发送到另一个文件的组件? - How can I send the state (useState) of one file component to another file's component? 如何将 useState 值从一个组件传递到另一个组件 - How can I pass useState value from one component to another component React:如何将状态值传递给另一个组件并使用它来呈现组件 - React: How to pass State value to another component and use it to render a component 如何将路由器中的组件状态传递给另一个路由器组件 - How to pass component state in router to another router component 如何将状态从有状态组件传递到另一个有状态组件 - How to pass state from a stateful component to another stateful component
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM