请问老师在点击提交之后,如何清空输入框

来源: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数据解构后再返回,不再具有响应式,所以清空不了。建议在一个方法中完成,如下

http://img.mukewang.com/climg/60bc773b0987370c06710868.jpg

去掉listReactiveEffect方法,然后用一个方法解构即可

http://img.mukewang.com/climg/60bc774d09f26f8e06040663.jpg

祝学习愉快!

0

0 学习 · 15276 问题

查看课程