uni-app QQ小程序 popup输入框会保留上次输入的内容

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app QQ小程序 popup输入框会保留上次输入的内容

操作步骤:

1 运行hello-uniapp 示例工程(qq小程序) 2 点击输入对话框, 在输入框中输入内容, 点击确定 3 再点击输入对话框,上次输入的内容依旧存在

预期结果:

每次点击输入对话框, 框里应该都是没有内容的

实际结果:

框里会保持上次输入的内容

bug描述:

运行hello-uniapp 示例工程,点击输入对话框, 在输入框中输入内容, 点击确定。再点击输入对话框,上次输入的内容依旧存在。app等平台无此问题。

图片

图片

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
uniapp
小程序
QQ
HBuilderX 4.24
第三方开发者工具 0.71
基础库 vue3

2 回复

自定义组件你关闭弹窗后可以手动清除内容的


在uni-app开发QQ小程序时,如果遇到popup输入框保留上次输入内容的问题,这通常是由于页面或组件的状态管理不当导致的。为了解决这个问题,可以在页面或组件的onLoadonShow生命周期函数中重置输入框的值。以下是一个示例代码,展示如何在uni-app中实现这一功能。

首先,假设你有一个popup组件,其中包含一个输入框:

<!-- components/PopupInput.vue -->
<template>
  <view class="popup">
    <input v-model="inputValue" placeholder="请输入内容" />
    <button @click="handleSubmit">提交</button>
    <button @click="handleCancel">取消</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    };
  },
  methods: {
    handleSubmit() {
      this.$emit('submit', this.inputValue);
      this.resetInput();
    },
    handleCancel() {
      this.$emit('cancel');
      this.resetInput();
    },
    resetInput() {
      this.inputValue = '';
    }
  }
};
</script>

在父页面中,使用这个popup组件,并在页面显示或加载时重置popup的状态:

<!-- pages/index/index.vue -->
<template>
  <view>
    <button @click="showPopup">显示Popup</button>
    <PopupInput 
      v-if="isPopupVisible" 
      @submit="handlePopupSubmit" 
      @cancel="handlePopupCancel" 
      ref="popupInput"
    />
  </view>
</template>

<script>
import PopupInput from '@/components/PopupInput.vue';

export default {
  components: {
    PopupInput
  },
  data() {
    return {
      isPopupVisible: false
    };
  },
  methods: {
    showPopup() {
      this.isPopupVisible = true;
      // 重置popup输入框内容
      this.$refs.popupInput.resetInput();
    },
    handlePopupSubmit(value) {
      console.log('提交的值:', value);
      this.isPopupVisible = false;
    },
    handlePopupCancel() {
      this.isPopupVisible = false;
    }
  },
  onShow() {
    // 页面显示时确保popup不可见且输入框内容重置(如果需要)
    this.isPopupVisible = false;
    // 注意:如果popup不在当前页面直接显示,这一步可能不需要
    // 但可以通过其他方式确保状态重置,比如使用Vuex管理状态
  }
};
</script>

在这个示例中,我们通过resetInput方法手动重置输入框的值,确保每次打开popup时输入框都是空的。同时,在页面onShow生命周期中也进行了相应的处理,以确保页面重新显示时popup的状态是正确的。这种方法可以有效避免输入框保留上次输入内容的问题。

回到顶部