Reactjs 如何将带有样式信息的字符串转换为文本组件?

Reactjs 如何将带有样式信息的字符串转换为文本组件?,reactjs,react-native,Reactjs,React Native,例如,我有一个字符串: "Wherefor art <strong>thou</strong> mr. <strong>fancypants</strong>" “你在哪里” 我需要将其转换为react原生文本组件并返回到render()方法。因此字符串将转换为: <Text>Where for art <Text style={{ fontweight : 600}}>thou</Text> mr. <

例如,我有一个字符串:

"Wherefor art <strong>thou</strong> mr. <strong>fancypants</strong>"
“你在哪里”
我需要将其转换为react原生文本组件并返回到render()方法。因此字符串将转换为:

<Text>Where for art <Text style={{ fontweight : 600}}>thou</Text> mr. <Text style={{fontweight: 600}}>fancypants</Text>;
你在哪里,范奇帕茨先生;
因此,我的渲染方法如下所示:

render() {
  let text = "Wherefor art <strong>thou</strong> mr. <strong>fancypants</strong>";
  return (
    <View style={{marginBottom : 20}}>
      <Text>{this.filterHtml(text)}</Text>
    </View>
  )
}
render(){
让text=“Where for artyou先生幻想者”;
返回(
{this.filterthtml(text)}
)
}
我尝试将文本转换为组件,但显然不起作用:

filterHtml = (text) => {
  if (text) {
    return text.replace(/<strong>([^<]*)<\/strong>/g, "<Text style={{fontweight : 600}}>$1</Text>")
  }
  return text;
}
filterthtml=(文本)=>{
如果(文本){

return text.replace(/([^不是很好的解决方案:使用中的HTML函数。例如:

<WebView
 source={{html:text}}
  />


不过,这也有一些缺点:您不能根据内容高度来设置Web视图的样式。如果这对您来说无关紧要,那您就走运了。

一个不太好的解决方案:在中使用HTML函数。例如:

<WebView
 source={{html:text}}
  />

不过,这也有一些缺点:您不能根据内容高度来设置Web视图的样式。如果这对您来说无关紧要,那您就走运了。

试试以下方法:

<Text>
  <Text>Where for art </Text>
  <Text style={{ fontweight : 600}}>thou</Text>
  <Text>mr. </Text>
  <Text style={{fontweight: 600}}>fancypants</Text>
</Text>

艺术在哪里
你
先生
幻想者
react原生文档清楚地说明了文本可以嵌套

文本支持嵌套、样式设置和触摸处理

试试这个:

<Text>
  <Text>Where for art </Text>
  <Text style={{ fontweight : 600}}>thou</Text>
  <Text>mr. </Text>
  <Text style={{fontweight: 600}}>fancypants</Text>
</Text>

艺术在哪里
你
先生
幻想者
react原生文档清楚地说明了文本可以嵌套

文本支持嵌套、样式设置和触摸处理


您询问如何拆分为多个文本组件,但听起来您的最终目标似乎是适当地显示html。如果确实如此,请检查。如果这不是您的意图,您至少可以看到他们是如何解决此问题的。

您问到如何拆分为多个文本组件,但听起来您的最终目标似乎是显示h如果这不是你的意图,你至少可以看到他们是如何处理这个问题的。

谢谢,我确实考虑了WebVIEW,但是考虑到你提到的问题,而其他人,这不是真的在桌面上。够公平的,那么我很好奇其他的答案,因为我最近面对这个问题。也许这一个有帮助:它确实帮助了!谢谢。我考虑了一个WebVIEW,但是考虑到你提到的,以及其他的,它不是真的在桌面上。足够公平-我很好奇其他的答案,因为我最近面对这个问题。也许这一个有帮助:它确实有帮助!谢谢。做另一种方式:代替O。如果将替换为,则构建一个组件,该组件将在标记之间查找字符串并将其传递给,其余的在两者之间。例如:“HeyHiHoi”将是:“Hey”“Hi”“Hoi”@leo,这正是我想知道的方法。可能是某种文本。split().map()只有在找到时才返回样式化的元素。我的观点是-你不应该以字符串替换开始。你应该以字符串开始并放入字符串-这是唯一的方法。你会发现-这不是那么简单,但蛮力应该起作用(不知何故:P)另一种方法是:不要用替换,而是构建一个组件,在标记之间查找字符串并将其传递给,其余的在标记之间。例如:“HeyHiHoi”将是:“Hey”“Hi”“Hoi”@leo,这正是我想知道的方法。可能是某种文本。split().map()只有在找到时才返回样式化的元素。我的观点是-你不应该以字符串替换开始。你应该以字符串开始并放入字符串-这是唯一的方法。你会发现-这不是那么简单,但蛮力应该起作用(不知何故:P)但问题是,如何最好地解析字符串并返回要在render()方法中呈现的react文本元素?我问的问题已经指定我需要嵌套标记。但从字符串开始…但问题是,如何最好地解析字符串并返回要在render()中呈现的react文本元素方法?我问的问题已经指定我需要嵌套标记。但是从字符串开始。。。