请问老师在点击提交之后,如何清空输入框
来源:2-8 使用 Composition API 开发TodoList(2)
呷哺呷哺
2021-06-06 14:52:18
问题描述:
如何在点击提交之后,清空input框内的内容,我通过给inputValue.value重新赋值为空,发现并没有作用
相关代码:
<script>
//关于inputValue操作的内容进行了封装
const inputReactiveEffect = () => {
const {
ref
} = Vue;
const inputValue = ref("");
const handleInputValueChange = (e) => {
// console.log(e.target.value);
inputValue.value = e.target.value;
};
return {
inputValue,
handleInputValueChange
}
}
//关于list操作的内容进行了封装
const listReactiveEffect = () => {
const { inputValue } = inputReactiveEffect();
const {
ref,
reactive
} = Vue;
const list = reactive([]);
//增加数据
const addItemToList = (item) => {
list.push(item);
inputValue.value = "";
console.log(list);
}
//删除数据
const handleDataDeletion = (index) => {
list.splice(index, 1);
}
return {
list,
addItemToList,
handleDataDeletion
}
}
const app = Vue.createApp({
setup(props, context) {
//流程调度中转
const {
list,
addItemToList,
handleDataDeletion
} = listReactiveEffect();
const {
inputValue,
handleInputValueChange
} = inputReactiveEffect();
return {
inputValue,
handleInputValueChange,
list,
addItemToList,
handleDataDeletion
}
},
template: `
<div>
<div>
<input :value="inputValue" @input="handleInputValueChange"
@keydown.enter="()=>addItemToList(inputValue)" />
<button @click="()=>addItemToList(inputValue)">提交</button>
</div>
<ul>
<li v-for="(item,index) in list" :key="index" @click="handleDataDeletion(index)">{{item}}</li>
</ul>
</div>
`
})
const vm = app.mount('#root');
</script>
1回答
好帮手慕星星
2021-06-06
同学你好,ref数据解构后再返回,不再具有响应式,所以清空不了。建议在一个方法中完成,如下

去掉listReactiveEffect方法,然后用一个方法解构即可
祝学习愉快!
相似问题