Vue实现回传一点渲染一点打字机效果
可以使用Vue的computed属性和watch属性实现回传一点渲染一点打字机效果。
首先,在data中添加一个新的属性typing,用于控制打字机效果的展示:
data() {
return {
prompt: '',
responseData: '',
response: '',
loading: 'false',
typing: false
};
},
然后,在computed中添加一个新的属性responseText,用于将responseData分割成一个个字符:
computed: {
responseText() {
return this.responseData.split('');
}
},
接着,在watch中添加一个新的监听器responseText,用于控制打字机效果的展示:
watch: {
responseText() {
this.typing = true;
let i = 0;
const interval = setInterval(() => {
this.response += this.responseText[i];
i++;
if (i === this.responseText.length) {
clearInterval(interval);
this.typing = false;
}
}, 50);
}
},
最后,在模板中使用v-if指令控制打字机效果的展示:
<template>
<div>
<div v-if='!typing'>{{ response }}</div>
<div v-else>{{ response }}_</div>
</div>
</template>
这样就实现了回传一点渲染一点打字机效果。每当responseData更新时,watch监听器就会将responseData分割成一个个字符,并按照一定时间间隔逐个添加到response中,从而实现打字机效果。
原文地址: https://www.cveoy.top/t/topic/jk7l 著作权归作者所有。请勿转载和采集!