当前位置: 首页 > 知识库问答 >
问题:

从字符串变量反应本机渲染组件

巫马磊
2023-03-14

或者问题应该是,如何将字符串转换为JSX?

在任何情况下,我都试图在我的反应原生应用程序上做一个性能黑客,要求我从字符串变量渲染反应原生组件。

例如,

let item = "<View>
  <Text>
      This is an item
  </Text>
</View>";

现在在我的渲染函数中,我想像这样渲染它:

render() {
    return (
      <View>
        {item}
      </View>
    );
}

现在,如果我试图运行应用程序,它会给出一个错误,因为我试图在视图组件中呈现文本。如果我在渲染之前尝试将项目包装在文本中,它只会在屏幕上以纯文本的形式渲染项目,并显示所有

然后,我如何渲染它,以便字符串中的标记表现为普通的React Native组件,而不是仅仅显示为字符串?

我找遍了,但没有找到解决办法

我将感谢任何建议。


共有2个答案

郏经纬
2023-03-14

尝试以下两个包之一:

https://www.npmjs.com/package/acorn-jsx

https://www.npmjs.com/package/react-jsx-parser

两者都允许动态地将字符串解析为jsx(没有机会在RN中进行测试,但对于React in web works来说很好)

郜俊健
2023-03-14

如果将对象而不是字符串放在视图中,则可以轻松地将其设置为内部视图。但是如果你想使用字符串,你必须编写一个转换器,将每个元素提取为字符串,然后检查并转换为它的等价视图。
如果你的视图有道具,你也必须转换它们(这会有点困难!)

 类似资料:
  • 在reactjs中,我试图从贴图对象渲染组件。更具体地说,按下一个按钮,我创建了一个新的“FormRow”组件,为了方便起见,我将其存储在javascript映射对象中(因为稍后我将使用它)。无论何时,我都想渲染刚刚添加的新组件,但我不知道如何从贴图中获取它。 我尝试以不同的方式解决我的问题,使用: myMap.for每个(key= 我没有尝试的是: https://stackoverflow.c

  • 所以就像标题所说的,我的应用程序的主页因为某种原因渲染了两次,我不知道为什么。从我的浏览器路由器,我最初调用一个JS文件,从那里我调用我的HomePage组件和React路由器,但然后我的页面渲染两次,我不知道为什么。 我的浏览器路由器(index.js): 然后pp.js被称为: 然后我的主页组件(index.jsx): 和路线。js: 但是我的页面是这样渲染的: 我真的很困惑,所以任何建议都会

  • 问题内容: 我知道烧瓶的功能。我必须提供模板的文件名。但是现在我想呈现模板的字符串(即模板的内容)。那讲得通。但我现在不想解释原因。如何简单地渲染模板的文本? 问题答案: 你可以使用:

  • 我有反应原生组件(例如:myComponent),它有下面的代码显示文本从this.props.text.这个文本道具被定义为字符串myComponent。 当我通过发送一个动作给出如下文本时,它将文本显示为字符串。但我希望组件显示为蓝色突出显示的链接 如果我直接在myComponent中硬编码字符串,它将显示可以执行onclick的链接。 有什么帮助可以将此显示为链接吗?

  • 问题内容: 在非SPA方案中,将经过清理但随机的HTML字符串作为输入: 该字符串源自WYSIWYG编辑器,并包含嵌套的常规HTML标记和应呈现给小部件的有限数量的自定义元素(组件)。 目前,这样的HTML代码段应该分别在服务器端(Express)上呈现,但最终也将在客户端上呈现,作为同构应用程序的一部分。 我打算使用React(或类似React的框架)来实现组件,因为它大概适合这种情况-它是同构

  • 我试图从一个id呈现一个反应原生组件,它被赋予一个超文本传输协议请求,然后返回组件可以使用的json。由于超文本传输协议请求是异步的,因此传递到PostCard呈现中的数据是未定义的。我试图通过等待getSinglePost的返回来解决这个问题,但是数据仍然没有定义。如果不清楚,渲染函数调用renderCard函数,该函数应该等待getSinglePost函数的json,然后返回一个填充的Post