编程语言
首页 > 编程语言> > javascript – 从字符串中反映渲染组件

javascript – 从字符串中反映渲染组件

作者:互联网

是否可以从字符串动态呈现React组件?

基本上我有来自数据库的页面内容,我想在内容中包含React组件.我正在努力实现的一个例子:

var html_string = '<i>React Component Rendered</i>: <Hello name="World" />';

var Hello = React.createClass({
  render: function() {
    return <strong>Hello {this.props.name}</strong>;
  }
});

function createMarkup() { return {__html: html_string}; };

var App = React.createClass({
  render: function() {
    return <div dangerouslySetInnerHTML={createMarkup()} />;
  }
});

ReactDOM.render(
  <App/>,
  document.getElementById('container')
);

但它只是渲染HTML而不评估< Hello />:

<div><i>React Component Rendered</i>: <hello name="World"></hello></div>

我想要:

<div><i>React Component Rendered</i>: <strong>Hello World</strong></div>

这个例子在JSfiddle:https://jsfiddle.net/26czprne/

解决方法:

正如thangngoc89所说,没有办法做到这一点.至少没有简单的方法.

JSX被转换为javascript,它只在语法上看起来像xml.

这个:

var x = <div> <i>React Component Rendered</i>: <Hello name="World" /> </div>;

映射到:

var x = React.createElement(
  "div",
  null,
  " ",
  React.createElement(
    "i",
    null,
    "React Component Rendered"
  ),

  ": ",
  React.createElement(Hello, { name: "World" }),
);

一个更好的策略可能是解析数据库元素,然后使用react动态呈现db查询的结果(这也会促进更松散的耦合).

标签:javascript,reactjs,react-jsx
来源: https://codeday.me/bug/20191007/1866194.html