老师我这样子提取分离出去后,如何让文本框的值清空喃
来源:2-8 使用 Composition API 开发TodoList(2)
慕函数0445997
2023-02-01 15:23:49
我这样子把代码分离出去,点击提交发送出去,我想清空文本框的值,发现没法清空了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
<div id="root"></div>
<script>
const listEffect = () => {
const {reactive} = Vue;
const list = reactive([1,2,3]);
const handleSubmit = (item) => {
list.push(item);
item.value = '';
}
return {list, handleSubmit}
}
const inputEffect = () => {
const {ref} = Vue;
const inputValue = ref('123');
const inputChangeHandle = (e) => {
inputValue.value = e.target.value
}
return {inputValue, inputChangeHandle}
}
const app = Vue.createApp({
setup(){
const {inputValue, inputChangeHandle} = inputEffect();
const {list, handleSubmit} = listEffect();
return {
list,
inputValue,
inputChangeHandle,
handleSubmit
}
},
template:`
<div>
<div>
<input :value="inputValue" @input="inputChangeHandle"/>
<button @click="() => handleSubmit(inputValue)">提交</button>
</div>
<ul>
<li v-for="(item,index) in list" :key="index">{{item}}</li>
</ul>
</div>
`,
});
app.mount('#root')
</script>
</body>
</html>1回答
好帮手慕久久
2023-02-01
同学你好,解答如下:
setup函数中的inputValue是控制input框内容的响应式变量。可以通过该变量将输入框内容清空,比如:


同学的写法不行,是因为handleSubmit方法接收到item是普通字符串,不是响应式变量。直接修改字符串的值,页面内容不会跟着变:

祝学习愉快!
相似问题