vue3 watch 函数节流 制作自己的二维码生成器

原创
08/02 11:09
阅读数 232

将输入框里面的字符串实时的转成二维码

 

在input内容改变的时候生成二维码, 但是可以看到每次都会触发这个生成操作

 

用lodash的节流函数包一层, 这样就能看到基本是达到了效果, 减少了很多次函数调用

为了看到效果, 下面是200ms的输出

 

 

<template>
  <div>
    <textarea
      v-model="text"
      cols="30"
      rows="10"
      placeholder="请输入文本..."
    ></textarea>
    <img src="" alt="" ref="imgRef" />
  </div>
</template>

<script>
import { ref, onMounted, watch } from "vue";
import QRCode from "qrcode";
import throttle from "lodash-es/throttle";

export default {
  setup() {
    const text = ref("");
    const imgRef = ref(null);
    const handleInput = throttle(() => {
      console.log("watch", text.value);
      QRCode.toDataURL(text.value || "hello world!").then(
        (url) => imgRef.value && (imgRef.value.src = url)
      );
    }, 100);
    watch(text, handleInput, {
      immediate: true,
    });
    return {
      text,
      imgRef,
    };
  },
};
</script>

<style></style>

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部