首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >className不工作于dangerouslySetInnerHTML

className不工作于dangerouslySetInnerHTML
EN

Stack Overflow用户
提问于 2021-11-09 04:31:33
回答 1查看 579关注 0票数 1

string是这样的:-

My first name is @John# and last name is %Smith#.

我要用代替:-

  • @<span className="contentDescHighlighted">
  • %<span className="contentDescHighlighted content_bold">
  • #</span>

工作守则如下:

代码语言:javascript
复制
  const handleAddingHighlight = (data) => {
    let changeAT = data.replaceAll(`@`, `<span className="contentDescHighlighted">`)
    let changePercentage = changeAT.replaceAll(`%`, `<span className="contentDescHighlighted content_bold">`)
    let highlightedData = changePercentage.replaceAll(`#`, `</span>`); console.log(highlightedData)

    return highlightedData
  }

更改string后,将使用dangerouslySetInnerHTML注入,如下所示:

代码语言:javascript
复制
  <p 
    className="contentDesc" 
    dangerouslySetInnerHTML={{__html: handleAddingHighlight(`My first name is @John# and last name is %Smith#.`)}}
  ></p>

不幸的是,应用的styling/className没有产生任何效果,如下所示:

代码语言:javascript
复制
  // what it should looks like
  <p className="contentDesc">
    My first name is <span className="contentDescHighlighted">John</span> and last name is <span className="contentDescHighlighted content_bold">Smith</span>.
  </p>
  // current outcome when using dangerouslySetInnerHTML
  <p 
    className="contentDesc" 
    dangerouslySetInnerHTML={{__html: handleAddingHighlight(`My first name is @John# and last name is %Smith#.`)}}
  ></p>

完整的组件将如下所示

代码语言:javascript
复制
export default function Test() {
  const handleAddingHighlight = (data) => {
    let changeAT = data.replaceAll(`@`, `<span className="contentDescHighlighted">`)
    let changePercentage = changeAT.replaceAll(`%`, `<span className="contentDescHighlighted content_bold">`)
    let highlightedData = changePercentage.replaceAll(`#`, `</span>`); console.log(highlightedData)

    return highlightedData
  }

  return (
    <>
      {/* what it should looks like */}
      <p className="contentDesc">
        My first name is <span className="contentDescHighlighted">John</span> and last name is <span className="contentDescHighlighted content_bold">Smith</span>.
      </p>
      {/* current outcome when using dangerouslySetInnerHTML */}
      <p 
        className="contentDesc" 
        dangerouslySetInnerHTML={{__html: handleAddingHighlight(`My first name is @John# and last name is %Smith#.`)}}
      ></p>
    </>
  )
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-09 04:36:14

这就是问题所在。使用dangerouslySetInnerHTML属性呈现的内容必须是HTML元素。他们根本就不是JSX。它应该是

代码语言:javascript
复制
class

(这是HTML属性)

而不是

代码语言:javascript
复制
className

(这是JSX属性)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69892879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档