箭头函数使用

箭头函数使用

       const inputList=()=>{

            const{reactive}=Vue;

            const listreactive([]);

            const addList = (item)=>{

                list.push(item);

               

            };

            return{list ,addList};

            

       };

       const inputAddValue=()=>{

             const {ref}=Vue;

             const inputValue=ref('1');

             const handInputchange=(e)=>{

                 inputValue.value=e.target.value;

             }

             return{inputValue,handInputchange};


       }

    const app =Vue.createApp({

        setup(){

            const {list,addList}=inputList();

           const {inputValue,handInputchange}=inputAddValue();

           const newaddList=()=>{addLst(inputValue)};

            return {list,inputValue,handInputchange,newaddList};

        },

        template:`<div>

                    <input :value="inputValue" @input="handInputchange" />

                   <button @click="newaddList">提交</button>

                     <div>

                        <ul>

                            <li v-for="(it,idex) in list" :key="idex">{{it}}</li>

                            </ul>

                        

                        </div> 

                 </div>  `

            

    })



我在setup中 有用箭头函数 出现

  • { "_rawValue": "1324234234", "_shallow": false, "__v_isRef": true, "_value": "1324234234" }

  • { "_rawValue": "1324234234", "_shallow": false, "__v_isRef": true, "_value": "1324234234" }

  • { "_rawValue": "1324234234", "_shallow": false, "__v_isRef": true, "_value": "1324234234" }

  • { "_rawValue": "1324234234", "_shallow": false, "__v_isRef": true, "_value": "1324234234" }

  • { "_rawValue": "1324234234", "_shallow": false, "__v_isRef": true, "_value": "1324234234" }


但是直接在标签中使用箭头函数则没有问题   

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕久久 2021-03-18 18:41:14

同学你好,是的。因为inputValue使用ref方法包裹后,它就是一个响应式的数据:

http://img1.sycdn.imooc.com//climg/60532ad609a60f1e05650131.jpg

而点击按钮、输入内容时,操作的都是上面的inputValue,所以会一起改变:

http://img1.sycdn.imooc.com//climg/60532dda096c9e6208840680.jpg

将箭头函数写在模板中,addList中只是inputValue的一个值,它就不能联动了:

http://img1.sycdn.imooc.com//climg/60532e4709cdc74b08350176.jpg

祝学习愉快!

好帮手慕久久 2021-03-18 11:25:29

同学你好,解答如下:

inputValue这个数据本身形式就是{ "_rawValue": "1324234234", "_shallow": false, "__v_isRef": true, "_value": "1324234234" },如下:

http://img1.sycdn.imooc.com//climg/6052c65309ae1a3f06220260.jpg

http://img1.sycdn.imooc.com//climg/6052c65809b58fe707890180.jpg

其中属性_value中,存储着它的值(我们输入的内容):

http://img1.sycdn.imooc.com//climg/6052c6e4090d508203910184.jpg

在模板中使用inputValue时,模板会自动解析出inputValue中的_value部分,即模板中的inputValue就是_value的值:

http://img1.sycdn.imooc.com//climg/6052c750096731b707390121.jpg

所以将箭头函数写在模板中时,传入addList方法中的inputValue就是“值”,而不是{ "_rawValue": "1324234234", "_shallow": false, "__v_isRef": true, "_value": "1324234234" }这种对象

http://img1.sycdn.imooc.com//climg/6052c71f091f77c408350176.jpg

而将箭头函数写在setup中时,传给addList的就是完整的inputValue({ "_rawValue": "1324234234", "_shallow": false, "__v_isRef": true, "_value": "1324234234" }),所以结果是同学写的那样:

http://img1.sycdn.imooc.com//climg/6052c7a00906a20e08340471.jpg

因此建议将箭头函数写在模板中。

祝学习愉快!

  • 提问者 慕哥0292637 #1

    老师  好像由于我把箭头函数写setup函数中    导致我所有li标签结果全部随着Input的value变化而变化

    2021-03-18 16:25:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师