reactjs - react 与 SVG : HTML inside foreignobject not rendered

标签 reactjs svg

我通过 foreignobject 将 HTML 嵌入到 SVG 中:

var SvgWithForeignObject = React.createClass({
  render: function() {
    return(
      <svg>
        <foreignobject><div>Hello From SVG</div></foreignobject>
      </svg>
    )
  }
});

ReactDOM.render( < SvgWithForeignObject / > ,
  document.getElementById('container')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="container">
  <!-- This element's contents will be replaced with your component. -->
</div>

“Hello From SVG”字符串未呈现。但是,我可以在 Chrome 或 FF 中进行较小的空白编辑,然后它就会变得可见:

enter image description here

(注意:屏幕录制来 self 通过 Scala.js 使用 React 的示例,但行为与普通 React 完全相同)

最佳答案

SVG 区分大小写,您要使用的元素称为 foreignObject。注意大写的 O。

此外,您还必须在此元素上设置 widthheight 属性。

最后,不要忘记在根 HTML 元素上设置 xmlns="http://www.w3.org/1999/xhtml"

var SvgWithForeignObject = React.createClass({
  render: function() {
    return(
      <svg>
        <foreignObject width="400" height="400"><div xmlns="http://www.w3.org/1999/xhtml">Hello From SVG</div></foreignObject>
      </svg>
    )
  }
});

ReactDOM.render( < SvgWithForeignObject / > ,
  document.getElementById('container')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="container">
  <!-- This element's contents will be replaced with your component. -->
</div>

关于reactjs - react 与 SVG : HTML inside foreignobject not rendered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39504988/

相关文章:

javascript - SVG 变形与动漫 js,奇怪的异常

javascript - 无法在缩放时没有抖动的情况下翻译初始 d3.zoomIdentity

c# - 将 Canvas 保存为 SVG

html - 如何改变SVG图像的颜色

javascript - 从 three.js 场景导出为 SVG 或其他矢量格式

javascript - 在不安全的前端计算价格?

javascript - 从不同的父组件传递 Prop

reactjs - 是否可以在安装时打开 React-Select 组件?

reactjs - 使用react-navigation禁用返回react-native

html - 在 React spa 应用程序中有条件地应用 css 样式