当前位置: 首页 > 知识库问答 >
问题:

怎么打开

公冶京
2023-03-14

我是react新手,正在使用react引导。我有一个完美工作的react应用程序,有两个组件,我使用的是功能组件。这是代码。

应用程序。js

function App() {
  const [modalShow, setModalShow] = useState(false);

  return (
    <>
      <Button variant="primary" onClick={() => setModalShow(true)}>
        Launch vertically centered modal
      </Button>

      <MyVerticallyCenteredModal
        show={modalShow}
        onHide={() => setModalShow(false)}
      />
    </>
  );
}

MyVerticallycenteremodal。js

export default function MyVerticallyCenteredModal(props) {
    return (
        <Modal
            {...props}
            size="lg"
            aria-labelledby="contained-modal-title-vcenter"
            centered
        >
            <Modal.Header closeButton>
                <Modal.Title id="contained-modal-title-vcenter">
                    Modal heading
            </Modal.Title>
            </Modal.Header>
            <Modal.Body>
                <h4>Centered Modal</h4>
                <p>
                    Cras mattis consectetur purus sit amet fermentum. Cras justo odio,
                    dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac
                    consectetur ac, vestibulum at eros.
            </p>
            </Modal.Body>
            <Modal.Footer>
                <Button onClick={props.onHide}>Close</Button>
            </Modal.Footer>
        </Modal>
    );
}

在这个阶段,我的代码工作正常。但是我需要做一些改变。我需要从MyVerticallyCenteredModal组件中删除show和onHide道具,并从Modal组件中访问道具。这是我所做的,

应用程序。js

<MyVerticallyCenteredModal />

MyVerticallycenteremodal。js

<Modal
  show={modalShow}
  onHide={() => setModalShow(false)}
  size="lg"
  aria-labelledby="contained-modal-title-vcenter"
  centered
>
...
</Modal>

现在我得到一个编译错误,

'modalShow' is not defined
'setModalShow' is not defined

但不从应用程序中移动useState。js到MyVerticallyCenter模式。我该怎么做?

共有2个答案

何甫
2023-03-14

状态由父组件控制

  <Button variant="primary" onClick={() => setModalShow(true)}>
    Launch vertically centered modal
  </Button>

因此,不可能从模态itsef控制模态行为。

但是如果您直接在

我们需要在模态组件中使用一个小按钮,并使用模态本身中的状态来控制:)

范嘉
2023-03-14

onClark();应该采取一个事件作为控制鼠标点击:

 onClick={(e) => {setModalShow(false)}};

onHide()也一样;

注意:您也可以使用“事件”一词代替字母“e”

 类似资料:
  • 如题,尝试了很久,始终无法打开,提示“无法访问此网站”。其实我只是想知道某个软件的版本号列表。大家是怎么解决hub.docker.com无法访问的问题的呢?或者是否可以直接在cmd里查询某个软件的版本(TAG)吗?

  • webpack5 打包时候会报几个这种问题,怎么解决

  • 我们提供您的业务地图高清图片的生成服务,每次生成高清地图,1500元起价。并根据打印的范围、详细程度、标注数量来计算实际价格,范围越大、内容越详细、标注越多,价格则越高。 以下样图生成价格为2500元:点此下载原图 (约10M,建议在wifi环境下下载) 打印的范围,添加一个区域用以标明输出的范围。 地图的详细程度,用地图左下角的比例尺数字告诉小图,如下图所示: 有的小伙伴会问,我的地图,打印出来

  • amh的MySQL怎么升级补丁? 用的MySQL是5.7.35版本,amh应用市场也是这个版本,但是接到网监的通知有安全隐患,需要整改。 列举了以下漏洞,还有漏洞详情。 漏洞: Oracle MySQL Server 安全漏洞(CVE-2023-2650) Oracle MySQL 安全漏洞(CVE-2023-22028) Oracle MySQL cURL 组件输入验证错误漏洞(CVE-2022

  • ​ 预警列表上有开关按钮,可随时在APP设置开关,可同步至PC