MDN nói rằng điều đó xlink:href
không được chấp nhận để ủng hộ href
. Bạn sẽ có thể sử dụng href
thuộc tính trực tiếp. Ví dụ dưới đây bao gồm cả hai phiên bản.
Kể từ React 0.14 , xlink:href
có sẵn thông qua React dưới dạng thuộc tính xlinkHref
. Nó được đề cập như một trong những "cải tiến đáng chú ý" trong các ghi chú phát hành cho 0,14.
<!-- REACT JSX: -->
<svg>
<use xlinkHref='/svg/svg-sprite#my-icon' />
</svg>
<!-- RENDERS AS: -->
<svg>
<use xlink:href="/svg/svg-sprite#my-icon"></use>
</svg>
Cập nhật 2018-06-09: Đã thêm thông tin về thuộc tính href
vs xlink:href
và ví dụ cập nhật để bao gồm cả hai. Cảm ơn @devuxer
Cập nhật 3 : Tại thời điểm viết bài, bạn có thể tìm thấy các thuộc tính SVG của React master tại đây .
Cập nhật 2 : Có vẻ như tất cả các thuộc tính svg bây giờ sẽ có sẵn thông qua phản ứng (xem PR thuộc tính svg đã hợp nhất ).
Cập nhật 1 : Bạn có thể muốn theo dõi vấn đề liên quan đến svg trên GitHub để biết thêm về hỗ trợ SVG. Có những phát triển trong các tác phẩm.
Bản giới thiệu:
const svgReactElement = (
<svg
viewBox="0 0 1340 667"
width="100"
height="100"
>
<image width="667" height="667" href="https://i.imgur.com/w7GCRPb.png"/>
{ /* Deprecated xlink:href usage */ }
<image width="667" height="667" x="673" xlinkHref="https://i.imgur.com/w7GCRPb.png"/>
</svg>
);
var resultHtml = ReactDOMServer.renderToStaticMarkup(svgReactElement);
document.getElementById('render-result-html').innerHTML = escapeHtml(resultHtml);
ReactDOM.render(svgReactElement, document.getElementById('render-result') );
function escapeHtml(unsafe) { return unsafe.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'"); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.4.1/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.1/umd/react-dom.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.1/umd/react-dom-server.browser.development.js"></script>
<h2>Render result of rendering:</h2>
<pre><svg
viewBox="0 0 1340 667"
width="100"
height="100"
>
<image width="667" height="667" href="https://i.imgur.com/w7GCRPb.png"/>
{ /* Deprecated xlink:href usage */ }
<image width="667" height="667" x="673" xlinkHref="https://i.imgur.com/w7GCRPb.png"/>
</svg></pre>
<h2><code>ReactDOMServer.renderToStaticMarkup()</code> output:</h2>
<pre id="render-result-html"></pre>
<h2><code>ReactDOM.render()</code> output:</h2>
<div id="render-result"></div>
<use xlinkHref="/svg/svg-sprite#my-icon" />
.