當(dāng)el-table的某些列動(dòng)態(tài)變化(v-if)的時(shí)候,經(jīng)常會(huì)遇到el-table-column條件渲染出現(xiàn)報(bào)錯(cuò)的情況
報(bào)錯(cuò)內(nèi)容:
h.$scopedSlots.default is not a function
究其原因惜颇, 這是因?yàn)樵趘-for或者v-if切換標(biāo)簽時(shí),多個(gè)相同的標(biāo)簽被渲染衰粹,如果不添加key來(lái)區(qū)分則會(huì)出現(xiàn)復(fù)用的情況劫流。而原本這些標(biāo)簽每一個(gè)都是獨(dú)立的,于是需要添加key來(lái)做區(qū)分榜配!
表格是element-ui通過(guò)循環(huán)產(chǎn)生的,而vue在dom重新渲染時(shí)有一個(gè)性能優(yōu)化機(jī)制吕晌,就是相同dom會(huì)被復(fù)用蛋褥,這就是問(wèn)題所在,所以睛驳,通過(guò)key去標(biāo)識(shí)一下當(dāng)前行是唯一的烙心,不許復(fù)用,就行了乏沸。
代碼示例如下:
添加 :key="Math.random()"
使用:
<el-table @sort-change="changesort4" ref="tableData4" border :data="tableData4">
<el-table-column fixed align="center" type=index label="序號(hào)" width="40" :key="Math.random()"/>
<el-table-column align="center" prop="regionname" width="110" :show-overflow-tooltip="true" label="運(yùn)營(yíng)中心" :key="Math.random()"/>
<el-table-column align="center" prop="agentname" width="110" :show-overflow-tooltip="true" label="服務(wù)商" :key="Math.random()"/>
<el-table-column align="center" prop="businessname" width="110" :show-overflow-tooltip="true" label="商家" :key="Math.random()"/>
<el-table-column align="center" prop="storename" width="110" :show-overflow-tooltip="true" label="門店" v-if="subjectForm4.groupBy===1" :key="Math.random()"/>
<el-table-column align="center" prop="billfee" label="訂單金額" sortable="custom" width="110" :key="Math.random()"/>
<!--<el-table-column align="center" prop="customername" label="會(huì)員" width="75" />-->
<el-table-column label="配送費(fèi)">
<el-table-column align="center" prop="customerDeliverFee" label="顧客支付" sortable="custom" width="110" :key="Math.random()"/>
<el-table-column align="center" prop="busBearFee" label="商家承擔(dān)" sortable="custom" width="110" :key="Math.random()"/>
<el-table-column align="center" prop="subsidyfee" label="騎手小費(fèi)" sortable="custom" width="110" :key="Math.random()"/>
<el-table-column align="center" prop="sumFee" label="合計(jì)扣除" sortable="custom" width="110" :key="Math.random()"/>
</el-table-column>
<el-table-column align="center" prop="serviceFee" label="外賣抽成" sortable="custom" width="110" :key="Math.random()"/>
<el-table-column align="center" prop="calfee" label="合計(jì)" sortable="custom" width="110" :key="Math.random()"/>
<el-table-column align="center" prop="balance" label="服務(wù)費(fèi)余額" sortable="custom" width="110" :key="Math.random()"/>
<el-table-column fixed='right' align="center" label="操作" v-if="subjectForm4.groupBy===2" :key="Math.random()">
<template slot-scope="scope">
<el-button @click="goListByStore(scope.row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>