为什么这个 Material-UI 网格项在我点击它时会移动?

Why does this Material-UI Grid item move when I click on it?

我正在使用 Material UI 开发 React 应用程序。我的应用程序页面有问题。

该页面包含一些文本和一个按钮,它们彼此垂直对齐。它还包含第二段文本和第二个按钮,它们彼此垂直对齐并且最初是隐藏的。第一个按钮可用于显示第二段文本和第二个按钮。第二个按钮可用于隐藏第二段文字及其本身(即第二个按钮)。

这是 link 页面的屏幕截图,其中显示了最初隐藏的内容(我还没有足够的 Whosebug 代表点来嵌入图像)。

react-material-ui-app-page-screenshot

我遇到的问题是:

当我点击第一个按钮(即"SHOW"按钮),然后点击第二个按钮(即"HIDE"按钮),然后再次点击第一个按钮; 第一个按钮在页面上跳转。更具体地说,它从让它的右边缘接触 <body> 元素的右边缘,到让它的左边缘接触前一段文本的右边缘。

按钮跳转后,当我 调整浏览器大小时 window(例如,通过单击并拖动 Chrome 应用程序 window) , 按钮 returns 回到原来的位置。

注意:跳转 发生在 Chrome 中,但不会发生在 Firefox 中。

你们知道为什么会这样吗?

我在 CodeSandbox 上创建了这个现象的演示。这是该演示的 link:

您可以通过向第 19 行添加宽度来防止该行为。

19 <Grid item style={{ border: "1px dashed lightblue", width: "100%" }}>

仔细一看,这似乎与 flex-wrap: wrapdisplay: flex; flex-direction: column; 上有关。

wrap={"nowrap"}

...修复它。

看到它here

很难说是不是bug。就列宽而言,我们对具有 flex-wrap:wrap 而没有集合 height 的弹性列容器有什么期望?
因为正确的行为可能是尽可能地缩小列。

错误在于它在不同的上下文中呈现不同。无论正确的行为是什么,都应该是一致的。