可以使用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中,从而实现打字机效果。

Vue实现回传一点渲染一点打字机效果

原文地址: https://www.cveoy.top/t/topic/jk7l 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录