vue 渲染机制踩坑记录

一、问题描述:
      项目中用到了el-tabs,el-tab-pane用到了循环遍历,列表数据为state.records,在遍历中加载子组件RecordItem,代码如下

 <el-tabs v-model='state.activeTab' :key="state.resetKey">
        <el-tab-pane v-for="record in state.records" :label='record.label' :name='record.name' :key="record.name">
          <RecordItem
            :data="record"
            @editBasicInfo="handleRecordItemEditBasicInfo"
          ></RecordItem>
        </el-tab-pane>
      </el-tabs>

在子组件RecordItem中有基本信息,表格项,其中表格项做了表格合并,表格项合并计算是在父组件计算好放入data中传过来的,为data.spanArr,在子组件接受的时候是这么定义的:

const state = recative({
   spanArr: props.data.spanArr,
})

在表格合并方法里也是用的state.spanArr,完事我的功能涉及到一个移动,比如TabA页面表格项移动到TabB页面的表格里,表格项、合并组spanArr都是在父组件计算的,完事移动完的TabB页面表格项合并样式错乱,我刚开始脑子没反应过来,一直打印信息看props.data.spanArr也没问题啊,弄了半天,才意识到我表格合并的方法里用的state.spanArr,而state.spanArr只是在第一次渲染的时候赋值了,一直是旧的值。
二、解决方案

    ①子组件里监听props.data.spanArr的值给state.spanArr赋值;
    ②表格合并方法里直接读取props.data.spanArr;
三、反思:也是大大的无语,在我意识里以为props.data.spanArr改变了,子组件的state.spanArr也就自动变了,其实他只是第一次循环加载的时候渲染了一次;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值