uni-app QQ小程序 popup输入框会保留上次输入的内容
uni-app QQ小程序 popup输入框会保留上次输入的内容
操作步骤:
1 运行hello-uniapp 示例工程(qq小程序) 2 点击输入对话框, 在输入框中输入内容, 点击确定 3 再点击输入对话框,上次输入的内容依旧存在
预期结果:
每次点击输入对话框, 框里应该都是没有内容的
实际结果:
框里会保持上次输入的内容
bug描述:
运行hello-uniapp 示例工程,点击输入对话框, 在输入框中输入内容, 点击确定。再点击输入对话框,上次输入的内容依旧存在。app等平台无此问题。
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10 | HBuilderX |
uniapp | ||
小程序 | ||
HBuilderX | 4.24 | |
第三方开发者工具 | 0.71 | |
基础库 | vue3 |
2 回复
自定义组件你关闭弹窗后可以手动清除内容的
在uni-app开发QQ小程序时,如果遇到popup输入框保留上次输入内容的问题,这通常是由于页面或组件的状态管理不当导致的。为了解决这个问题,可以在页面或组件的onLoad
或onShow
生命周期函数中重置输入框的值。以下是一个示例代码,展示如何在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的状态是正确的。这种方法可以有效避免输入框保留上次输入内容的问题。