You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Material-UI的Tooltip标题中实现换行?

解决Material-UI Tooltip多行文本显示的问题

嘿,我来帮你搞定这个Tooltip换行的需求!要让Tooltip里的两段文本各占一行,其实有几种简单的方法,结合你的代码给你一步步说明:

核心思路

Material-UI的Tooltip组件的title属性不止能传字符串,还支持React元素;同时默认Tooltip样式里有white-space: nowrap会强制单行,所以我们需要同时调整内容和样式来实现换行。


方法1:用JSX元素实现强制换行

这种方法最直观,直接把两行文本用<br />分隔,或者每行包在<div>里,同时修改Tooltip的样式允许换行。

步骤1:修改Tooltip的样式

首先在你的样式定义里(不管是用withStyles还是makeStyles),给tooltip类添加换行允许的样式:

// 示例:如果用withStyles
const styles = theme => ({
  tooltip: {
    whiteSpace: 'pre-wrap', // 允许文本换行,保留换行符和空格
    // 或者用 whiteSpace: 'normal',让文本自动换行(适合不确定长度的内容)
  },
});

步骤2:调整内容传入方式

你原来的代码是循环生成多个Tooltip,这应该不是你要的——你需要一个Tooltip里显示两行语言。所以把languageList组合成带换行的JSX内容,再传给renderToolTip:

// renderToolTip函数无需大幅修改,因为title支持ReactNode类型
renderToolTip = tipContent => {
  const { classes } = this.props;
  if (tipContent) {
    return (
      <Tooltip 
        title={tipContent} 
        placement="left" 
        classes={{ tooltip: classes.tooltip }}
      >
        <IconButton>
          <InfoOutlined />
        </IconButton>
      </Tooltip>
    );
  }
  return null;
};

// 在渲染时生成多行内容
render() {
  const languageList = ['English', 'Spanish'];
  // 方式A:用<br />分隔两行文本
  const tooltipContent = (
    <>
      {languageList[0]}<br />
      {languageList[1]}
    </>
  );
  // 方式B:每行用div包裹(更灵活,方便后续给单行加样式)
  // const tooltipContent = languageList.map(lang => (
  //   <div key={lang}>{lang}</div>
  // ));
  
  return (
    <div>
      {this.renderToolTip(tooltipContent)}
    </div>
  );
}

方法2:用换行符+CSS white-space: pre

如果你的内容都是纯文本,也可以直接传带换行符的字符串,配合CSS让换行生效:

步骤1:同样修改Tooltip样式

tooltip: {
  whiteSpace: 'pre', // 识别字符串里的换行符\n
},

步骤2:传入带换行符的文本

render() {
  const languageList = ['English', 'Spanish'];
  const tooltipText = languageList.join('\n'); // 把数组转成带换行的字符串
  
  return (
    <div>
      {this.renderToolTip(tooltipText)}
    </div>
  );
}

注意点

  • 如果你原来的map是想生成多个Tooltip(每个语言对应一个),那当单个Tooltip需要多行时,还是要把该Tooltip的title改成多行内容哦。
  • 两种方法都需要修改tooltip类的样式,否则默认的nowrap会让所有内容挤在一行。

内容的提问来源于stack exchange,提问作者HungryBird

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:48:11