先上代码
<div>
<ProCard
tabs={{
onChange: (activeKey) => {
tabClick(activeKey);
},
}}
>
{tabName.map((item, index) => {
return <ProCard.TabPane key={String(index + 1)} tab={item}></ProCard.TabPane>;
})}
</ProCard>
<Lists type={type} sourceType={sourceType} key={sourceType}/>
</div>
原因是,Lists这个子组件是tab下的表格,是同一个组件,因为参数不同所以数据不同,为了让只render一个表格,我把组件放在map外面。但是这样发现子组件并不会在点击的时候重新渲染,查询后发现,在子组件加一个key就可以解决这个问题。
至于为什么我的List组件不放在ProCard里面呢,是因为ProCard加了tabs属性之后ProCard就只能让TabPane撑开了,其他元素并不能撑开(这是我自己的理解)