【问题标题】:html tags does not work inside jsx made tagshtml 标签在 jsx 制作的标签中不起作用
【发布时间】:2017-01-13 15:42:18
【问题描述】:

我一直在 keystone.js 项目中使用包 express-react-views,因此我正在静态生成我的视图。但是,当放在我制作的自定义组件中时,本机 HTML 标记似乎不起作用。

假设我有以下内容:

office.name = name
office.address = lorem ipsum
office.contactInfo.phone = 123
office.contactInfo.fax = 456

如果我呈现以下内容:

<Stub textPosition="right" title={"Office / " + office.name}>
    {office.address}
    <small>Tel: {office.contactInfo.phone}</small>
    <br />
    <small>Fax: {office.contactInfo.fax}</small>
</Stub>

它的渲染有点像这样:

NAME
lorem.ipsum
,[object Object],[object Object],[object Object]

在我看来,这三个标签变成了对象。

我做错了什么?谢谢!

【问题讨论】:

  • 我很好奇如果你的 office.contactInfo.fax 里面有什么。看起来它是对象数组。尝试使用console.log 将其打印到控制台并检查其中的内容。
  • 它实际上是一个对象。包含一些其他字段的对象。

标签: reactjs keystonejs


【解决方案1】:

正如我在评论中所写,您的 {office.contactInfo.fax} 是对象,但现在是一个文本字段。我不确定那里还有哪些其他字段/属性,但要在 html 中显示某些内容,您应该从该传真对象中提取文本字段。 例如:

> fax = {'fax_home': '12345', 'fax_work': '6789'}
> Object {fax_home: "12345", fax_work: "6789"}
> typeof(fax)
> "object"
> fax['fax_home']
> "12345"

您还可以遍历对象中的键以提取您需要的内容。 (这在反应中也是可能的)。只是 JS:

fax = {'fax_home': '12345', 'fax_work': '6789'}
Object.keys(fax).forEach(function (key) {
   console.log(fax[key]);
});

【讨论】:

  • 谢谢。但是,我发现,例如,如果我删除 html 标签,office.contactInfo.fax 等字段将正常显示。它们只有在 html 标记内时才会错误地呈现。它们呈现文本,但它们之间仍然有逗号。
  • 事实上,我放入 HTML 标签中的任何内容都会变成 [object Object],甚至只是静态文本。到目前为止,只有 div 有效。
  • 这里是存根组件的渲染部分。我使用 react-bootstrap 作为 组件。 render: function() { return ( &lt;div&gt; &lt;Col sm={6} md={6}&gt; &lt;h3 className="h3"&gt;{this.props.title}&lt;/h3&gt; &lt;div dangerouslySetInnerHTML={{__html: this.props.children}} /&gt; &lt;/Col&gt; &lt;Col sm={6} md={6}&gt; &lt;img src={this.props.img} className="maxwidth" /&gt; &lt;/Col&gt; &lt;/div&gt; );
猜你喜欢
  • 2019-01-10
  • 2014-03-07
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多