更新记录

1.0.0(2025-01-14) 下载此版本

模仿 AI 聊天时的打字效果,全平台支持,无任何依赖,不预设任何样式,完全由用户自定义模板和样式,简洁、灵活、高效。


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.8.10 app-vue app-nvue
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

bp-typer

模仿 AI 聊天时的打字效果,全平台支持,无任何依赖,不预设任何样式,完全由用户自定义模板和样式,简洁、灵活、高效。

示例

<template>
    <view class="content">

        <bp-typer
            ref="typerRef"
            :text="greeting"
            auto-start
            :interval="100"
            @on-changed="handleChanged"
            @on-completed="handleCompleted"
            v-slot="{ text }"
        >
           <view class="chat">
                {{ text }}
           </view>
        </bp-typer>

        <view class="actions">
            <button type="default" @click="$refs.typerRef.start()">开始</button>
            <button type="default" @click="$refs.typerRef.restart()">重新开始</button>
            <button type="default" @click="$refs.typerRef.stop()">停止</button>
            <button type="default" @click="$refs.typerRef.pause()">暂停</button>
            <button type="default" @click="$refs.typerRef.resume()">恢复</button>
            <button type="default" @click="handleChangeText">改变文案</button>
        </view>

    </view>
</template>

<script>
    export default {
        data() {
            return {
                greeting: '您好!很高兴第一次与您交流。我是您的AI助理,有什么我可以帮到您的吗?请随时告诉我您的需求。',
            }
        },
        methods: {
            handleChangeText() {
                this.greeting = '如果没有其他问题,我就先不打扰您了,感谢您的时间。祝您今天愉快!再见。'
            },
            handleCompleted() {
                console.log('handleCompleted')
            },
            handleChanged(index) {
                console.log('handleChanged', index)
            },
        }
    }
</script>

<style scoped>
    .content {
        box-sizing: border-box;
        width: 100vw;
        height: 100vh;
        padding: 30rpx;
        background-color: #F3F4F5;
    }
    .chat {
        padding: 30rpx;
        background-color: #ffffff;
        border: 1rpx solid #99999999;
        border-radius: 12rpx;
        color: #171A1D;
    }

    .actions {
        margin-top: 40rpx;
    }
</style>

API

属性

属性名称 说明 类型 默认值
text 需要显示的文字内容,可以传入动态值。当值发生变化时,会自动重新显示文字内容 string ''
interval 文字字符显示时间间隔 number 200
auto-start 是否自动开始显示字符 boolean false

事件

事件名称 说明 类型
on-changed 每次显示字符时的回调,参数 index 为字符对应的索引 (index: number) => void
on-completed 所有字符都显示完后的回调 () => void

插槽

插槽名称 说明
default 自定义默认内容,版本为 Vue3 时,该组件不渲染任何内容,完全由用户自定义模板和样式;版本为 Vue2 时,该组件会在文字外包裹一层 <view> 标签

暴露

方法名称 说明 类型
start 开始显示字符 () => void
restart 重新显示字符 () => void
stop 停止显示字符 () => void
pause 暂停显示字符 () => void
resume 恢复显示字符 () => void

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问