javascript - 如何将句子输出到 JSX,同时将与给定单词匹配的单词着色为不同的颜色?

标签 javascript reactjs

我有以下代码:

    export default function App() {
      const defaultText = "Your partner for software innovations";
      const colorText = "software";

      const result = defaultText.split(" ").map((txt) => txt);
      return <div className="App">{result}</div>;
    }

defaultText 是我来自后端的数据。

colorText 是一个应该着色的单词。

所以我正在尝试执行以下操作。我想通过 defaultText 进行映射,如果 txt === colorText,则以红色显示该单词,因此最终结果将显示为“您的软件创新合作伙伴”红色的“软件”一词​​。

我可以轻松映射 defaultText 如您所见,但我无法理解如何实现该过滤逻辑。

最佳答案

您可以将文本分成几部分,然后向文本添加一个类以突出显示。

伪代码:

const defaultText = "Your partner for software innovations";
const colorText = "software";

const segments = defaultText.split(colorText);

return (
  <div className="App">
    {segments.map((segment, index) => (
      <Fragment key={index}>
        <span>{segment}</span>
        {(index !== segments.length - 1) && (<span>{colorText}</span>)}
      </Fragment>
    )}
  </div>
);

和CSS:

span.highlight {
  color: red;
}

如果您希望关键字无论字母大小写如何都匹配,则可以在分割时使用RegEx。

关于javascript - 如何将句子输出到 JSX,同时将与给定单词匹配的单词着色为不同的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73805899/

相关文章:

javascript - 用于构建音序器的 Web Audio API 调度。我不明白

reactjs - React Pro 侧边栏

javascript - Array.map 对象不显示到 View ?

javascript - react : Not able to render values in an Object

javascript onclick 函数不起作用?

javascript - 无法将编辑的内容存储到数据库

javascript - 从递归创建数组

javascript - jQuery 未检测到在文本区域中按下的回车键

javascript - 私有(private)路由在 React 中被调用数十次

javascript - 使用 ReactJS 从 JSON 获取数据时遇到问题