react让子组件重新渲染

763 阅读1分钟

先上代码

<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撑开了,其他元素并不能撑开(这是我自己的理解)