代码之家  ›  专栏  ›  技术社区  ›  Pranav

如何从钩子中的另一个组件打开模态?

  •  0
  • Pranav  · 技术社区  · 5 年前

    主页.js

    const HomePage = () => {
      return (
        <>
          <button onClick={() => setLoginModalShow(true)}>Open Modal</button>
        </>
      );
    };
    

    我创建了下面的文件来导出其他文件,并使其在其他组件中有用

    公共登录.js

    import LoginModal from "./LoginModal";
    
    export const setLoginModalShow = (props) => {
      console.log("PROPS", props);
      return <LoginModal showModal={props} />;
    };
    

    这是模态分量

    const LoginModal = (props) => {
      const [loginModalShow, setLoginModalShow] = useState(props.showModal);
    
      console.log("PROPS in MODAL", props);
      return (
        <>
          <Modal
            show={loginModalShow}
            onHide={setLoginModalShow}
            size="lg"
            aria-labelledby="contained-modal-title-vcenter"
            centered
          >
            <Modal.Header closeButton>
              <Modal.Title id="contained-modal-title-vcenter">Logout</Modal.Title>
            </Modal.Header>
            <Modal.Body>
              <h4>Are you sure to Logout?</h4>
            </Modal.Body>
            <Modal.Footer>
              <Button onClick={() => setLoginModalShow(false)}>Cancel</Button>
            </Modal.Footer>
          </Modal>
        </>
      );
    };
    

    请参考codesandbox链接: https://codesandbox.io/s/nameless-cdn-70zuq 访问页面后,单击“打开模式”按钮

    1 回复  |  直到 5 年前
        1
  •  0
  •   olore    5 年前

    const HomePage = () => {
      const [showLogin, setShowLogin] = useState(false);
      return (
        <>
          <button onClick={() => setShowLogin(true)}>Open Modal</button>
          <LoginModal show={showLogin} close={() => setShowLogin(false)} />
        </>
      );
    };
    
    <Modal
            show={props.show}
            cancel={props.close}
    ...
    

    下面是一个工作示例:

    https://codesandbox.io/s/nice-euclid-d0dw0