Vue 组件实战


目录
  • Vue 组件
    • axios实现数据请求
    • 计算属性
      • 案例一:首字母大写
      • 案例二:过滤案例
    • 监听属性
    • 局部组件
    • 全局组件
    • 组件通信之父传子
    • 组件通信之子传父
    • ref属性(组件间通信)
      • 普通标签使用
      • 组件使用ref属性
    • 事件总线(不常用)
    • 动态组件和keep-alive

Vue 组件

Vue 生命周期钩子

axios实现数据请求




    
    Title
    
    



  • 电影名字是:{{film.name}}

    电影介绍:{{film.synopsis}}

from flask import Flask,make_response,jsonify

app=Flask(__name__)
@app.route('/films')
def films():
    import json
    with open('./movie.json','r',encoding='utf-8') as f:
        res=json.load(f)
    obj = make_response(jsonify(res))
    obj.headers['Access-Control-Allow-Origin']='*'
    return obj

if __name__ == '__main__':
    app.run()

image


计算属性

我们可以通过计算属性computed来缓存计算,什么意思呢?

在Vue中我们可以使用插值来展示数据,插值的普通函数,只要页面一刷新,函数就会重新运算,不管和函数有关没关的值都会变,函数也会重新计算,导致运行效率降低;

那么我们可以将自定义函数写在computed中来控制,把函数当成属性来用,调用不需要加括号,只有这个函数使用的属性(变量)发生变化,函数才重新运算,这样做可以减轻压力,减少资源浪费

案例一:首字母大写




    
    计算属性
    
    
    
    


输入内容: ----》 {{mytext.substring(0,1).toUpperCase()+mytext.substring(1)}}

函数绑定(会刷新页面,也不推荐):

计算属性(推荐):


输入内容: -----》{{mytext1}}

计算属性

我们可以发现只有和属性相关的才会打印,如果下面输入内容只是打印了普通函数,就算函数内和mytext1不相关

案例二:过滤案例




    
    过滤案例
    


  • {{data}}

计算属性2



监听属性

watch来设置监听属性,当mytext发生变化,就会执行和mytext绑定的函数方法




    
    Title
    


--->{{mytext}}

监听属性


局部组件

写在components里的是局部组件,位置被限制,只能再局部使用

比如如下例子中,Top组件只能在只能再id为app的标签(div)内使用, Top组件内如果想再定义子组件,只能在该组件内的template中的div内使用




    
    Title
    

















局部组件


全局组件

任意位置都可以使用但是也得是在vue实例托管的div范围内




    
    Title
    


全局组件


组件通信之父传子

组件间data数据不同享,数据传递,如果我们想从父组件传递到子组件数据通过props自定义属性来实现,比如如下例子:




    
    Title
    
    
    
    


子组件显示:
父组件输入内容:

父传子


组件通信之子传父

ps:Vue内置的对象都以$xx出现

我们可以通过自定义事件来实现子组件向父组件传递数据,在子组件中使用$emit('自定义事件',参数)来实现




    
    Title
    
    
    
    



父组件

接收子组件发送的数据:{{childText}}

子传父


ref属性(组件间通信)

普通标签使用

普通标签使用ref属性,通过$refs获取到的就是ref属性所在的标签,获取到的是一个对象,如果多个标签写了ref属性,那么就将所有带ref属性的标签弄到一个对象中,可以对html进行操作设置等,如下示例:




    
    Title
    
    
    
    


普通标签使用ref

ref属性1

组件使用ref属性

ref属性,如果放在组件上,就是当前组件对象




    
    Title
    
    
    
    


通信:

父组件按钮:

ref属性2

事件总线(不常用)




    
    Title
    


动态组件和keep-alive

动态组件:实现点击不同的连接显示不同的页面,实现跳转,使用component标签,用is属性绑定,指定哪个显示哪个

keep-alive:通过keep-alive标签实现组件不销毁,保留原来输入的内容




    
    Title
    



动态组件

vue