validateDOMNesting(...): <按钮> 警告

2024-02-02

我正在使用 React 制作一个网站。

当我的网站有很多文本时,我会显示一个按钮,例如show more or less.

在我的项目中,它运行良好,但总是显示警告validateDOMNesting(...): <button>

我的示例代码是这样的。

const [show, setShow] = useState(false);

function handleShow() {
  show ? setShow(false) : setShow(true);
}

<CardActionArea>
  <Button onClick={handleShow}> 
    { show ? text : text.substr(0, 100) + "..." }
  </Button>
</CardActionArea>

I think CardActionArea is a button组件,它使一个嵌套button now.

但如果我声明href财产在button,它不会发出警告。

有没有一个好的方法,不发出警告不使用href财产?


Issue:在您的代码中,您已经在按钮中放置了一个按钮,这是不允许的。

来自Material-UI CardActionAreadocs https://material-ui.com/api/card-action-area/#inheritance

遗产

的道具ButtonBase组件也可用。你可以采取 利用此行为来定位嵌套组件。

如果你继续航行到按钮底座 https://material-ui.com/api/button-base/#component-name你会看到它默认是一个文档'button'成分。

选项1:将按钮逻辑移至CardActionArea并设置component的支柱Button对任何事not一个按钮,就像一个跨度。这使得整个卡片操作区域都有 onClick 处理程序并且具有响应性。

<CardActionArea onClick={handleShow}>
  <Button component="span"> 
    { show ? text : text.substr(0, 100) + "..." }
  </Button>
</CardActionArea>

选项2:保持原样并设置组件的 propCardActionArea to 其他任何东西比“按钮”。这将离开only具有 onClick 处理程序的按钮,卡片操作区域将记录点击,即连锁反应,但否则将无响应。

<CardActionArea component="span">
  <Button onClick={handleShow}> 
    { show ? text : text.substr(0, 100) + "..." }
  </Button>
</CardActionArea>

两者之间option 1在我看来,这是首选选项,因为它使整个行动区域具有响应性,但这完全基于所提供的事实,并且您的需求/设计可能会有所不同或更复杂。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

validateDOMNesting(...): <按钮> 警告 的相关文章

  • Xhr上传event.loaded问题

    opts xhr function var xhr new window XMLHttpRequest Upload progress xhr upload onprogress function e if e lengthComputab
  • 在复选框内映射复选框 ReactJS

    我有一个函数 一旦主复选框被选中 就会触发子复选框 并且所有这些复选框都是从 JSON 映射的 主复选框 最高级别 及其下面的所有子复选框 第二级别 都会在单击时显示 并且效果很好 我想要显示的是单击时主复选框 第三级别 的子复选框2 级项
  • 数字和数字对象有什么区别?

    存储在普通变量中的数字有什么区别 var foo 5 和一个数字对象 var bar new Number 5 数字对象可以用来做什么 A Number对象包含一些有用的方法和属性 例如 数字对象方法 Method Description
  • jQuery的$如何既是函数又是对象?

    我的意思是对象 object Object 它是怎么做的 selector and fn init同时 你能给我一个简单的例子吗 这并不是 jQuery 独有的 而是 javascript 的一个方面 所有函数都是对象 例如 var f f
  • 在 TypeScript 中迭代对象的键和值

    在纯 JavaScript 中 我们可以迭代对象属性和值 如下所示 const values Object keys obj map key gt obj key 在 TypeScript 中 此语法是错误的 因为 TS 编译器显示以下消息
  • 如何在 React 组件中使用 CDN

    我正在尝试使用基于 D3 构建的库 称为 Greuler 来动态渲染图形 它的 npm 包似乎已损坏 当我改用 Greuler CDN 时 index html 中的测试图终于起作用了 但是 我正在开发一个 React 应用程序 并且我希望
  • 在 HTML5 中堆叠多个画布

    我试图使用相互堆叠的四块画布 但除了顶部画布的内容外 它们的内容不会显示 我按照我希望它们显示的顺序将 z index 值放入其中 但只有最上面的一个显示内容 它们的位置是绝对的 z 索引是 1 2 3 和 4 是否还有其他原因导致它们不显
  • 无法获取子 DOM 元素

    注 由于问题有点复杂 为了可读性对代码进行了抽象 We ve a
  • 查找第一个可滚动父级

    我遇到这种情况 需要将元素滚动到视口中 问题是我不知道哪个元素是可滚动的 例如 在纵向中 主体是可滚动的 而在横向中 它是另一个元素 还有更多情况会更改可滚动元素 现在的问题是 给定一个需要滚动到视口中的元素 找到其第一个可滚动父元素的最佳
  • 如何使 CSS 样式覆盖 JavaScript 应用的样式

    我动态创建一个 HTML 表 并应用一些样式 var tbl document createElement table tbl id CrewMemberTable document getElementById CrewMemberPan
  • React Native 中循环 Json 并显示

    How do I go about looping the result i retrieved from Json render function console log this state list contents
  • 用 JavaScript 改变文本颜色?

    我想在单击按钮时更改标题的颜色 这是我的代码 但它不起作用 我不明白为什么不 var about function init about document getElementById about innerHTML about style
  • 为什么我会失去对元素的引用?

    我偶然发现了一些奇怪的东西 至少对我来说 案例如下 我选择一个元素 child1 从 DOM 并将其保存到变量中 我继续添加一个新元素child1的家长 parent1 现在 如果我尝试修改某些值child1它不记录更改 似乎引用已经消失
  • 如何检查浏览器中消失的元素?

    How can I inspect an element which disappears when my mouse moves away 我不知道它的 ID 类别或其他任何信息 但想检查它 我尝试过的解决方案 在控制台内运行 jQuer
  • 在 jQuery 中获取最接近元素的形式

    我编写了这个 js jquery 脚本来检查表单中的所有复选框 它工作得很好 但是这会检查页面上的所有复选框 无论它们是什么表单包装器 这是函数 function toggleCheck state var checkboxes jQuer
  • Angular CDK Overlay,更改默认覆盖容器

    有没有办法改变OverlayContainer 我创建了一个工具提示组件 但有时我想将叠加层附加到特定元素 默认情况下 叠加层附加到文档正文 以下是我创建叠加层的方法 private initOverlay void const posit
  • 当来自 Mozilla Firefox 和 MS Edge 上的剪贴板时 Alpha 会变成黑色

    我正在使用代码从这里 https stackoverflow com a 15369753 5875416将剪贴板中的图像粘贴到页面上 它在所有浏览器 Chrome Firefox Edge 和 Opera 中都能正常工作 问题是 当图像是
  • 如何将所有后代节点和链接设置为与 2 级祖先相同的颜色?

    我有一个 d3 js 树 其后代节点接收其 2 级祖先的节点颜色 这在级别 2 到级别 3 之间有效 但在级别 4 及以上级别停止工作 相关代码 var colourScale d3 scale ordinal domain MD Prof
  • 如何从 fetch API 返回 json 响应

    我有一个像这样的函数 check auth fetch Urls check auth credentials include method GET then response gt if response ok return respon
  • 在 JSON 对象中存储和发送原始文件数据

    我正在寻找一种方法来传输任何文件类型的原始文件数据和任何可能的内容 我的意思是文件和文件内容都是用户生成的 在 Backbone 前端中使用 xhr ajax 调用两种方式针对 Django 后端 编辑 也许问题仍然不清楚 如果您在 IDE

随机推荐