我试图让Typography组件正确地截断带有省略号的溢出文本,但当它嵌套在Alert组件中时,它不起作用.以下是我所拥有的内容的示例片段:

<MenuItem>
  <Alert style={{ width: 300 }}>
    <AlertTitle>
      <Typography variant="inherit" noWrap>
        Here is my text.
      </Typography>
    </AlertTitle>
  </Alert>
</MenuItem>

根据MaterialUIv4(我正在使用的)的文档,noWrap属性只适用于块或内联元素.我try 将该属性添加到AlertAlertTitleTypography组件,但似乎都不能正确截断文本.我可以将菜单项设置为看起来像Alert,这样我就不需要将Typography嵌套在Alert中,但如果可能的话,我更喜欢保持上面的 struct .

推荐答案

在v5的Material-UI中,您的代码运行得很好.要使其在v4中运行相同,您需要进行两个调整:

  • Typography元素上指定component="p".在v4中,它缺省为"span",不支持noWrap
  • Alert内的message CSS class指定overflow: "auto"
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Alert from "@material-ui/lab/Alert";
import AlertTitle from "@material-ui/lab/AlertTitle";
import Typography from "@material-ui/core/Typography";

const useStyles = makeStyles((theme) => ({
  alert: {
    "& .MuiAlert-message": {
      overflow: "auto",
    },
  },
}));

export default function SimpleAlerts() {
  const classes = useStyles();

  return (
    <Alert style={{ width: 300 }} className={classes.alert}>
      <AlertTitle>
        <Typography variant="inherit" noWrap component="p">
          Here is my text and now it is getting too long to fit.
        </Typography>
      </AlertTitle>
    </Alert>
  );
}

https://codesandbox.io/p/sandbox/alert-typography-nowrap-w5768q?file=%2Fdemo.js%3A1%2C1-28%2C1

Javascript相关问答推荐

使用print This时, map 容器已在LeafletJS中初始化

无法检测卡片重叠状态的问题

JS—删除对象数组中对象的子对象

我的角模板订阅后不刷新'

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

使用原型判断对象是否为类的实例

使用POST请求时,Req.Body为空

如何迭代叔父元素的子HTML元素

为什么我的自定义元素没有被垃圾回收?

面对代码中的错误作为前端与后端的集成

如何利用CSS中的隐藏元素实现平滑扩展和防止网格行间隙

当标题被点击时,如何使内容出现在另一个div上?

使用自动识别发出信号(&Q)

未捕获语法错误:Hello World中的令牌无效或意外

Reaction即使在重新呈现后也会在方法内部保留局部值

select 2-删除js插入的项目将其保留为选项

React数组查找不读取变量

使用jQuery每隔几秒钟突出显示列表中的不同单词

如何在函数组件中保留对计时器的引用

对象作为react 子对象无效(已找到:具有键的对象{type,props}).如果要呈现一个子级集合,请改用数组