javascript - 返回并渲染 JSX

标签 javascript reactjs

我有以下函数,它将 JSX 添加到变量标记。但是,当调用该函数时,标记将呈现为纯文本而不是 JSX。如何让字符串呈现为 JSX 而不是纯文本?

函数调用:

<FormGroup controlId="items">
    {this.renderItems()}
</FormGroup>

renderItems():

renderItems() {
    let content = this.state.content;
    console.log(content);
    let markup = "<ul>";
    for (const [key, value] of Object.entries(content)) {
        if (value) {
            markup += "<li><Checkbox checked>" + key + "</Checkbox></li>"
        }
        else {
            markup += "<li><Checkbox>" + key + "</Checkbox></li>"
        }
    }
    markup += "</ul>";

    return (markup);
}

最佳答案

问题是您没有创建 JSX 元素。您只是在创建字符串。实现这一目标的一种方法是

renderItems() {
  let content = this.state.content;
  return (
    <ul>
      {Object.entries(content).map(([key, value]) => (
        <li>
          <Checkbox checked={!!value}>{key}</Checkbox>
        </li>
      ))}
    </ul>
  );
}

在这里,我们使用JSX Expressions添加动态值。

关于javascript - 返回并渲染 JSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52809323/

相关文章:

javascript - 按两个不同类别过滤

javascript - 用另一个对象覆盖对象数组而不影响第一个对象的顺序

javascript - Angular ng-repeat(键,值)|按值排序

javascript - 无法创建在 IE 中工作的日期对象

javascript - 为对象内的变量设置状态

javascript - 使用一组数据创建多个相似的组件

reactjs - 隐藏滚动条,但在react.js中保留滚动功能

javascript - 满足条件时停止 Jquery.map

javascript - 如何将样式应用于 SVG 元素数组

javascript - React.js 应用程序是否会根据请求完全传送到浏览器?