1- import React , { useMemo } from "react" ;
1+ import React , { useMemo , useId } from "react" ;
22import Svg , {
33 Defs ,
44 G ,
@@ -23,24 +23,27 @@ const renderLogo = ({
2323 logoColor,
2424 logoMargin,
2525 logoBorderRadius,
26+ clipPathId
2627} ) => {
2728 const logoPosition = ( size - logoSize - logoMargin * 2 ) / 2 ;
2829 const logoBackgroundSize = logoSize + logoMargin * 2 ;
2930 const logoBackgroundBorderRadius =
3031 logoBorderRadius + ( logoMargin / logoSize ) * logoBorderRadius ;
31-
32+ const clipLogoBackgroundId = `clip-logo-background-${ clipPathId } ` ;
33+ const clipLogoId = `clip-logo-${ clipPathId } ` ;
34+
3235 return (
3336 < G x = { logoPosition } y = { logoPosition } >
3437 < Defs >
35- < ClipPath id = "clip-logo-background" >
38+ < ClipPath id = { clipLogoBackgroundId } >
3639 < Rect
3740 width = { logoBackgroundSize }
3841 height = { logoBackgroundSize }
3942 rx = { logoBackgroundBorderRadius }
4043 ry = { logoBackgroundBorderRadius }
4144 />
4245 </ ClipPath >
43- < ClipPath id = "clip-logo" >
46+ < ClipPath id = { clipLogoId } >
4447 < Rect
4548 width = { logoSize }
4649 height = { logoSize }
@@ -54,10 +57,10 @@ const renderLogo = ({
5457 width = { logoBackgroundSize }
5558 height = { logoBackgroundSize }
5659 fill = { backgroundColor }
57- clipPath = " url(#clip-logo-background)"
60+ clipPath = { ` url(#${ clipLogoBackgroundId } )` }
5861 />
5962 </ G >
60- < G x = { logoMargin } y = { logoMargin } clipPath = " url(#clip-logo)" >
63+ < G x = { logoMargin } y = { logoMargin } clipPath = { ` url(#${ clipLogoId } )` } >
6164 < Rect
6265 width = { logoBackgroundSize - logoMargin }
6366 height = { logoBackgroundSize - logoMargin }
@@ -71,7 +74,7 @@ const renderLogo = ({
7174 height = { logoSize }
7275 preserveAspectRatio = "xMidYMid slice"
7376 href = { logo }
74- clipPath = " url(#clip-logo)"
77+ clipPath = { ` url(#${ clipLogoId } )` }
7578 />
7679 ) }
7780 </ G >
@@ -100,6 +103,8 @@ const QRCode = ({
100103 onError,
101104 testID,
102105} ) => {
106+ const clipPathId = useId ( ) ;
107+
103108 const result = useMemo ( ( ) => {
104109 try {
105110 return transformMatrixIntoPath ( genMatrix ( value , ecl ) , size ) ;
@@ -173,6 +178,7 @@ const QRCode = ({
173178 logoColor,
174179 logoMargin,
175180 logoBorderRadius,
181+ clipPathId,
176182 } ) }
177183 </ Svg >
178184 ) ;
0 commit comments