同一个svg渲染不同

同一个svg渲染不同

场景: 在同一个Tab下的两个Pane中加载了同一个组件,发现第二个pane中的组件显示svg效果和第一个pane不一样

  • 第一个pane
    在这里插入图片描述

  • 第二个pane
    在这里插入图片描述

两个pane渲染的是同一个组件,一开始我以为是React.memo渲染缓存的问题,导致第二次加载svg的问题

  • App
<Tabs defaultActiveKey="1" onChange={onChange} activeKey={num}>
  <TabPane tab="机器学习" key="1">
     <LearingTable
       learningType='ml'
     />
   </TabPane>
   <TabPane tab="深度学习" key="2">
     <LearingTable
       learningType='dl'
     />
   </TabPane>
 </Tabs>
  • LearingTable
const LearingTable = React.memo(() => {
	return (<div></div>)
})

但是反复测试都没有解决,后来发现svg的设计有问题,同一张svg不能出现在同一个页面dom中

解决

assets中存入两个名字不一样,内容一样的svg,通过props传入参数用于区分不同的svg(但他们本质上是一样的)

在这里插入图片描述

<div className={styles.content}>
	 {
	   learningType 
	   ? learningType === LEARNING_TYPE.ML
	       ? <NoDataIcon />
	       : <NoData1Icon />
	     : <NoDataIcon />
	 }
 <div>

版权声明:本文为qq_44326745原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。