2017-11-17 11 views
0

アプリ内からbabel-plugin-inline-react-svgを使用すると、私はリアクションv16.0.0コンポーネントにいくつかのSVGをインポートしています。リアクションレンダリングSVGはページ上の他のSVGを上書きします

私はそのコードを実行すると、ページが3 SVGsはすべてこのように、同じものを使用してレンダリングされ
import React from 'react'; 
import Close from './close.svg'; 
import Chevron from './right.svg'; 
import EmptyCart from './empty.svg'; 

const Component = props => (
    <div> 
    <Close /> 
    <EmptyCart /> 
    <Chevron /> 
    </div> 
); 

:すべてを引き継ぐようだ、私は最初のレンダリングSVGsのどちら

duplicated SVGs

他のものの<EmptyCart />を最初に置くと、それらはすべてカートアイコンになります。しかし、ここには本当のキッカーがあります:私がDOMを調べると、SVGはすべて正しいと思われます(それらはすべて互いに完全に異なっています)。

誰でもこれまでに見たことがありますか?どのようにDOMが1つのことを言うことが可能ですが、ブラウザは別のものをレンダリングすることができますか?

+0

右と空、近くには何が? –

+0

''は、DOM構造のこれと似ています。https://gist.github.com/dargue3/76f3d0e10d6c613242d60ae77c1abee1 – dargue3

+0

これらはid値を共有していますか?すなわち、複数のファイルにid = "a"またはid = "b" –

答えて

1

他のSVGも同様ですが、それらが似ており、idが一致すると、これが問題になります。

<path id="4eeded6c-befb-41ba-a055-83a9e4ddc009" d="M3.632 3.182H1.091A1.09 1.09 0 0 1 1.09 1h3.322c.467 0 .883.297 1.033.74l4.096 12.046.036.134c.083.406.53.777.928.78l8.87.056c.39.002.831-.361.925-.816l1.552-6.017a1.09 1.09 0 1 1 2.112.545l-1.539 5.96c-.285 1.417-1.625 2.518-3.064 2.51l-8.869-.057c-1.408-.008-2.718-1.073-3.036-2.451L3.632 3.182zM9.272 23a2.191 2.191 0 0 1-2.181-2.201c0-1.216.977-2.2 2.182-2.2s2.181.984 2.181 2.2A2.191 2.191 0 0 1 9.273 23zm10.91 0A2.191 2.191 0 0 1 18 20.799c0-1.216.977-2.2 2.182-2.2s2.181.984 2.181 2.2A2.191 2.191 0 0 1 20.182 23z"/> 

あなたはこのidはの標的化さを取得し、ここでSVG自体の中で再利用することがわかります。

<use xlink:href="#4eeded6c-befb-41ba-a055-83a9e4ddc009"/> 

とき、私競合を避けるためにフォトショップなどのようなアプリケーションからエクスポートするときに、これは特に、共通の問題ですsvgを使用してください。一意性を保証するために、すべてのIDを手動で変更します。それが助け場合

、私は再利用する方法の他の例のSVGのに入るコードペンを作成しました:https://codepen.io/peter-mouland/pen/JErvZY

関連する問題