vue3 watch及computed的使用案例
() => state.selectTreeList,
(val) => {
const treeData = _.cloneDeep(val)
let provinceCode = formConfig.model.placeArea
let provinceNum = 0
if (treeData.length > 0) {
treeData.forEach((item) => {
if (item.id === provinceCode) {
provinceNum += 1
}
})
}
if (formConfig.model.industryType === '6640' && provinceNum > 0) {
treeData.map((item, index) => {
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
}
})
} 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
)