【发布时间】:2021-02-08 23:47:06
【问题描述】:
我正在尝试在 vue 中构建一个小的 ProgressBar 组件
我的父组件是这样的:
onUploadProgress: function(progressEvent) {
this.progress = Math.round( (progressEvent.loaded * 100) / progressEvent.total )
console.log(this.progress)
}
<ProgressBar :loading="loading" :progress="progress"></ProgressBar>
这是我的子组件:
<template>
<div v-if="loading" class="progress-bar-wrapper">
<div class="progress-bar" :style="'width:'+progress+'%'">{{progress+'%'}}</div>
</div>
</template>
<script>
export default {
name: "ProgressBar",
props: {
loading: {type:Boolean},
progress:{type:Number, default:0}
},
watch: {
progress(){
console.log(this.$props.progress)
}
}
}
</script>
我缩小了问题范围,看起来我父母中的this.progress 没有正确更新;如果我在上面放置一个观察者,什么都不会发生:
watch: {
progress(){
console.log(this.progress)
}
}
但如果我从回调函数中console.log(this.progress) 我得到预期值...
【问题讨论】: