Vue组件使用入门

文章讲述了在Vue.js中组件间的数据传递方法,包括使用props、内部Data和Vuex进行状态管理。还介绍了如何引入和使用组件,如Movie组件,以及如何通过props传递数据。此外,文章提到了ElementUI作为前端框架的使用,包括安装、全局注册和创建表格的例子,并提到了第三方图标库如FontAwesome的集成。
摘要由CSDN通过智能技术生成

第三方组件

组件之间的传值

  • 组件可以用内部的Data提供数据,也可以使用父组件提供prop方式传值
    • 使用export default
  • 兄弟组件之间可以通过Vuex等统一数据源提供数据共享
    • vue无能为力,需要其他辅助如vuex

组件的引入

需要修改三个地方

  • 在script标签中import组件和对应的路径

  • 在components中注册组件名称

  • 在template在对应位置使用组件名称的标签来引用组件

    <template>
      <div id="app">
        <Movie></Movie>
        <img alt="Vue logo" src="./assets/logo.png">
      </div>
    </template>
    
    <script>
    import Movie from './components/Movie.vue'
    export default {
      name: 'App',
      components: {
        Movie,
      }
    }
    </script>
    

组件的编写

  • 使用template编写主要内容,如数据的渲染等

  • 在script中编写脚本和数据

    • export default:导出数据,之后可以在引入该组件的地方使用导出的数据
    • props:设置一些该vue自己的属性,在其他组件引用时可以使用这个属性传值给本vue
    <template>
        <div>
            <!-- 给子组件的对应位置传值,当调用的组件传值给对应属性时,则可以被渲染 -->
            <h1>{{title}}</h1>
            <span>{{ rating }}</span>
            <button @click="like">收藏</button>
        </div>
    </template>
    
    <script>
    export default {
        // 导出组件的名称
        name: "Movie", 
        //自定义一个标签,使得Movie被其他vue引入时,标签中有title属性
        props:["title","rating"],
        data: function(){
            return {
                title:"No Film"
            }
        },
        //定义按键的方法
        methods:{
            like() {
                alert("Ok!")
            }
        }
    }
    </script>
    
    <template>
        <div>
            <!-- 给子组件的对应位置传值,当调用的组件传值给对应属性时,则可以被渲染 -->
            <h1>{{title}}</h1>
            <span>{{ rating }}</span>
            <button @click="like">收藏</button>
        </div>
    </template>
    
    <script>
    export default {
        // 导出组件的名称
        name: "Movie", 
        //自定义一个标签,使得Movie被其他vue引入时,标签中有title属性
        props:["title","rating"],
        data: function(){
            return {
                title:"No Film"
            }
        },
        //定义按键的方法
        methods:{
            like() {
                alert("Ok!")
            }
        }
    }
    </script>
    

Element-ui

这是饿了么提供的一套前端开源框架

  • 文档 https://element.eleme.cn/#/zh-CN

  • 安装

    npm install element-ui -S
    

    安装完成后所有第三方资源会放在node_modules目录,也会被记录在package.json中,如果项目中不存在node_modules目录,则可以安装后再运行

    npm install
    
  • 引入

    可以直接使用全局注册,使得在项目任何位置可以使用

    import Vue from 'vue'
    import App from './App.vue'
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    
    Vue.config.productionTip = false
    Vue.use(ElementUI)
    new Vue({
      render: h => h(App),
    }).$mount('#app')
    
  • 使用组件

    如创建一个表格,可以在文档中选择对应样式并拷贝

    <template>
        <el-table
        :data="tableData"
        style="width: 100%"
        :row-class-name="tableRowClassName">
        <!-- 在每行结束时调用tableRowClassName,自动传递两个对应的行索引参数 -->
        <el-table-column
          prop="date"
          label="日期"
          width="180">
        </el-table-column>
        <el-table-column
          prop="name"
          label="姓名"
          width="180">
        </el-table-column>
        <el-table-column
          prop="address"
          label="地址">
        </el-table-column>
      </el-table>
    </template>
    
    <script>
    export default {
        methods: {
            // 隔行改变颜色
          tableRowClassName({row, rowIndex}) {
            if (rowIndex % 2 === 0) {
              return 'warning-row';
            } else if (rowIndex % 2 === 1) {
              return 'success-row';
            }
            return '';
          }
        },
        data() {
          return {
            tableData: [{
              date: '2016-05-02',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1518 弄',
            }, {
              date: '2016-05-04',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1518 弄'
            }]
          }
        }
      }
    </script>
    <style>
      .el-table .warning-row {
        background: oldlace;
      }
    
      .el-table .success-row {
        background: #f0f9eb;
      }
    </style>
    

第三方图标库

  • Font Awesome 4.0

    https://fontawesome.dashgame.com/

    • 安装

      npm install font-awesome
      
    • 使用

      import "font-awesome/css/font-awesome.min.css"
      
  • Element-ui 也提供了一些简单的图标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值