vue3 watch及computed的使用案例

vue3 watch及computed的使用案例

//可以多个watch 一起使用
() => state.selectTreeList,
    (val) => {
        const treeData = _.cloneDeep(val)
        // 所属行业为:保理(6640),且所属地区只有省份,没有城市区县
        // 去掉省级下面的children,并改掉省级名字--直接显示为 ‘省属’
        let provinceCode = formConfig.model.placeArea
        let provinceNum = 0 //如果是只有省的话+1
        if (treeData.length > 0) {
            treeData.forEach((item) => {
                if (item.id === provinceCode) {
                    provinceNum += 1
                }
            })
        }
        if (formConfig.model.industryType === '6640' && provinceNum > 0) {
            treeData.map((item, index) => {
                // treeData[index].children = []
                if (item.id === provinceCode) {
                    item.name = '省属'
                }
            })
        }
        //
        formConfig.formItems.forEach((item) => {
            if (item.prop === 'placeArea') {
                item.render = (prop) => {
                    return (
                        <g-select-tree
                            disabled='true'
                            treeData={treeData}
                            everyChoose
                            v-model={prop.value}
                        />
                    )
                }
            }
        })
    },
    { deep: true }
)
watch(
    () => route.query,
    (data) => {
        if (!_.isEmpty(data)) {
            emits('getRouteQuery', data)
        }
    },
    {
        immediate: true
    }{
        deep: true
    }
)
watch(
    () => state.districtList,
    (val) => {
        getOpitons(val, 'district')
    }
)
function getOpitons(val, propName) {
    if (val.length > 0) {
    //更改对象中的属性名
        const options = val.map((el) => {
            return {
                label: el.name,
                value: el.id
            }
        })
        formConfig.formItems.forEach((item) => {
            if (item.prop === propName) {
                item.controlConfig['options'] = options
                // item.controlConfig['props']['disabled'] = false
            }
        })
    } else {
        formConfig.formItems.forEach((item) => {
            if (item.prop === propName) {
                item.controlConfig['props']['disabled'] = true
            }
        })
    }
}

...

 watchEffect(() => {
        
        forParent({
           
        })
    })


...

const emits = defineEmits([
    'update:show',
    'update:rowedit',
    'update:rowdetails',
    'update:rowadd',
    'update',
    'change',
    'hide'
])

const localModalShow = computed({
    get: () => props.show,
    set: (val) => {
        emits('update:show', val)
    }
})
const localrowdetails = computed({
    get: () => props.rowdetails,
    set: (val) => {
        emits('update:rowdetails', val)
    }
})

const boxPaddingTop = computed(() =>
    props.config.hideToolBox && !props.config.title ? size2Rem(25) : 0
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值