如何使单击锚等同于单击详细信息标签?

Thinkvantagedu

我有一个<details>标签,单击它可以切换一些内容。现在,<a>在它下面有一个标签,单击该<a>标签后,我想切换相同的内容,即单击<a>等效于单击<details>这是我尝试过的代码片段:

import React, { useState } from "react";
import ReactDOM from "react-dom";

const Menu = ({ toggleDetails }) => {
  return (
    <div>
      <a href="/#" onClick={toggleDetails}>
        Open
      </a>
    </div>
  );
};

const Details = (isOpen) => {
  return (
    <details>
      <summary>Hello</summary>
      {isOpen ? <div>Hi</div> : null}
    </details>
  );
};

const App = () => {
  const [isOpen, setIsOpen] = useState(false);
  const toggleDetails = () => {
    setIsOpen(isOpen ? false : true);
  };
  return (
    <div>
      <Details isOpen={isOpen} />
      <Menu toggleDetails={toggleDetails} />
    </div>
  );
};

ReactDOM.render(<App />, document.getElementById("container"));

在单击“ Hello”时,它会切换“ Hi”。我想在单击“打开”时执行相同的操作,即切换“嗨”。我该怎么做?条件渲染不起作用。我应该使用ref来访问<details>标签的'open'属性吗?

编辑:

我还尝试了以下ref解决方案,但没有成功:

const Details = (isOpen) => {
  const detailsRef = useRef();
  // detailsRef.current.open = isOpen
  return (
    <details ref={detailsRef}>
      <summary>Hello</summary>
      <div>Hi</div>
    </details>
  );
};
Mohebifar

我假设您正在尝试使用details标签的本机切换功能。为此,您需要通过open属性控制打开/关闭状态然后,您应该使用该onToggle事件来检测何时单击了summary元素,以便可以使组件的状态与实际DOM保持同步。

const Menu = ({ setIsOpen }) => {
  return (
    <div>
      <a
        href="#"
        onClick={() => {
          setIsOpen((prev) => !prev);
        }}
      >
        Open
      </a>
    </div>
  );
};

const Details = ({ isOpen, setIsOpen }) => {
  return (
    <details
      open={isOpen}
      onToggle={(event) => {
        setIsOpen(event.target.open);
      }}
    >
      <summary>Hello</summary>
      <div>Hi</div>
    </details>
  );
};

const App = () => {
  const [isOpen, setIsOpen] = useState(false);

  return (
    <div>
      <Details isOpen={isOpen} setIsOpen={setIsOpen} />
      <Menu setIsOpen={setIsOpen} />
    </div>
  );
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击AppointmentPane时如何获取约会详细信息-JFXtras

来自分类Dev

TortoiseSVN等同于“ svn信息”

来自分类Dev

TortoiseSVN等同于“ svn信息”

来自分类Dev

我在“摘要”标签中有一个“标签”标签。单击标签时未打开详细信息。怎么解决?

来自分类Dev

单击“约会窗格”时如何获取约会详细信息-JFXtras

来自分类Dev

如何在列表视图的片段中显示项目详细信息,请单击

来自分类Dev

Javascript Fetch API单击用户时如何获取用户的帖子详细信息?

来自分类Dev

在详细信息元素中,如何防止onclick事件单击内容?

来自分类Dev

如何在Android中的AlertDialog中添加“单击以获取更多详细信息”可扩展字段

来自分类Dev

单击片段中的列表项时如何显示详细信息?

来自分类Dev

用户单击表格视图中的详细信息按钮时如何显示图像。的iOS

来自分类Dev

如何从上下文菜单中右键单击获取项目的ID或详细信息?

来自分类Dev

单击主详细信息页面中的项目时如何防止打开多个页面?

来自分类Dev

单击应用程序时如何路由到特定应用程序详细信息

来自分类Dev

单击<详细信息>(而不是<摘要>)以关闭“披露声明”?

来自分类Dev

当用户单击所选按钮时显示详细信息

来自分类Dev

jQuery在单击时显示更多详细信息

来自分类Dev

单击时基于sim详细信息关闭Worklight App

来自分类Dev

单击列表即可打开工作详细信息

来自分类Dev

单击以显示详细信息,使用Jquery和Ajax

来自分类Dev

Android:在TextView上显示详细信息单击

来自分类Dev

单击单选按钮时是否过滤用户详细信息?

来自分类Dev

显示单击的引导表行的详细信息

来自分类Dev

单击锚点后如何提醒标签

来自分类Dev

在单击列表视图的项目之前,如何通过获取输入到数据库的详细信息来显示详细信息视图

来自分类Dev

Azure等同于Amazon VM标签吗?

来自分类Dev

MVC3 ::从详细信息视图导航表,而不是单击表中的详细信息链接

来自分类Dev

使用PHP单击该项目时如何将其详细信息带到另一个页面?

来自分类Dev

如何在完整日历中单击一天时显示事件详细信息

Related 相关文章

  1. 1

    单击AppointmentPane时如何获取约会详细信息-JFXtras

  2. 2

    TortoiseSVN等同于“ svn信息”

  3. 3

    TortoiseSVN等同于“ svn信息”

  4. 4

    我在“摘要”标签中有一个“标签”标签。单击标签时未打开详细信息。怎么解决?

  5. 5

    单击“约会窗格”时如何获取约会详细信息-JFXtras

  6. 6

    如何在列表视图的片段中显示项目详细信息,请单击

  7. 7

    Javascript Fetch API单击用户时如何获取用户的帖子详细信息?

  8. 8

    在详细信息元素中,如何防止onclick事件单击内容?

  9. 9

    如何在Android中的AlertDialog中添加“单击以获取更多详细信息”可扩展字段

  10. 10

    单击片段中的列表项时如何显示详细信息?

  11. 11

    用户单击表格视图中的详细信息按钮时如何显示图像。的iOS

  12. 12

    如何从上下文菜单中右键单击获取项目的ID或详细信息?

  13. 13

    单击主详细信息页面中的项目时如何防止打开多个页面?

  14. 14

    单击应用程序时如何路由到特定应用程序详细信息

  15. 15

    单击<详细信息>(而不是<摘要>)以关闭“披露声明”?

  16. 16

    当用户单击所选按钮时显示详细信息

  17. 17

    jQuery在单击时显示更多详细信息

  18. 18

    单击时基于sim详细信息关闭Worklight App

  19. 19

    单击列表即可打开工作详细信息

  20. 20

    单击以显示详细信息,使用Jquery和Ajax

  21. 21

    Android:在TextView上显示详细信息单击

  22. 22

    单击单选按钮时是否过滤用户详细信息?

  23. 23

    显示单击的引导表行的详细信息

  24. 24

    单击锚点后如何提醒标签

  25. 25

    在单击列表视图的项目之前,如何通过获取输入到数据库的详细信息来显示详细信息视图

  26. 26

    Azure等同于Amazon VM标签吗?

  27. 27

    MVC3 ::从详细信息视图导航表,而不是单击表中的详细信息链接

  28. 28

    使用PHP单击该项目时如何将其详细信息带到另一个页面?

  29. 29

    如何在完整日历中单击一天时显示事件详细信息

热门标签

归档