老师我这样子提取分离出去后,如何让文本框的值清空喃

来源: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框内容的响应式变量。可以通过该变量将输入框内容清空,比如:

https://img.mukewang.com/climg/63da15350984dbdd09810192.jpg

https://img.mukewang.com/climg/63da154f092ab21f06180345.jpg

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

https://img.mukewang.com/climg/63da15c50938f53b10460161.jpg

祝学习愉快!

1

0 学习 · 17877 问题

查看课程