Vue中数据请求与计算属性

一、数据请求
      (1)fetch
      为什么使用?
      XMLHttpRequest 是一个设计粗糙的 API,配置和调用方式非常混乱,
      而且基于事件的异步模型写起来不友好。
      兼容性不好,这是W3C的标准,将来如果实现兼容,一定大火

//get
  fetch("**").then(res=>res.json()).then(res=>{console.log(res)})
  fetch("**").then(res=>res.text()).then(res=>{console.log(res)})
  //post
  fetch("**",{
  method:'post',
  headers: {
  "Content‐Type": "application/x‐www‐form‐urlencoded"
  },
  body: "name=kerwin&age=100"
  }).then(res=>res.json()).then(res=>{console.log(res)});
  fetch("/users",{

  method:'post',
  // credentials: 'include',
  headers: {
  "Content‐Type": "application/json"
  },
  body: JSON.stringify({
  name:"kerwin",
  age:100
  })
  }).then(res=>res.json()).then(res=>{console.log(res)});

并且避免了回调地狱。

  注意:
        Fetch 请求默认是不带 cookie 的,需要设置 fetch(url, {credentials:
'include'})

        (1)axios

        注意:axios外层会进行封装一个data。

 <script>
        //axios请求,属于第三方的库
        new Vue({
            el:"#box",
            data:{
                datalist:[]
            },
            methods:{
                bth(){
                    //axios自动包装一个data属性 res.data这是最外层
                    //使用箭头函数
                    axios.get("./json/test.json").then(res=>{
                        this.datalist = res.data.data.films;
                    },err=>{
                        console.log(err);
                    })
                }
            }
        })
    </script>

二、计算属性
复杂逻辑,模板难以维护
  (1) 基础例子
  (2) 计算缓存 VS methods
    -计算属性是基于它们的依赖进行缓存的。
    -计算属性只有在它的相关依赖发生改变时才会重新求值
  (3) 计算属性 VS watch
     - v-model

下面是计算属性实现模糊查找

 <div id="box">
        <input type="text" v-model="mytext"/>
        <!-- <input type="text" @input="handleInput" /> -->

        <ul>
            <li v-for="data in getMyDatalist">
                {{data}}
            </li>
        </ul>
    </div>

    <script type="text/javascript">
        //["aaa","bbb","ccc","ddd","add","cee","eee"]        
       var vm = new Vue({
           el:"#box",
           data:{
               mytext:'',
               datalist:["aaa","bbb","ccc","ddd","add","cee","eee"]
           },
           computed: {
            getMyDatalist(){
                return this.datalist.filter(item=>item.indexOf(this.mytext)>-1)
            }
           },
       })

       var arr = [1,2,3,4,5]
    
       var newlist =arr.filter(item=>item>=3)
       console.log(newlist)
    </script>

 

 

 

上一篇:PDO查询数据简单示例


下一篇:第一个zsh脚本