vue3学习

目录

一、vue3特性

二、开发环境

三、开发环境

四、Setup

五、ref reactive来定义响应式数据

六、toRefs

七、script Setup(vue3.2版本)

八、计算属性(computed)

九、侦听(watch)

十、组件通讯

  1、父传子

  2、子传父  

十一、插槽

十二、路由useRoute和useRouter

十三、Vuex store


一、vue3特性

  1、性能比vue快

  2、体积小,按需编译

  3、组合式API

二、开发环境

  1、引入script资源

    <script src="https://unpkg.com/vue@next"></script>

  2、使用vue create 项目名创建

三、开发环境

  1、创建vue实例语法:

   const app = Vue.createApp({

        //选项

         data(){

          return{

          }

         }

    })

    app.mount('#app')   //挂载

  2、脚手架创建vue3项目

   vue create 项目名

四、Setup

  概念:setup 选项是一个接收 props 和 context 可以返回一个对象的函数,需返回定义的数据,否则页面中将无法显示

  语法:

     setup(props,context){

       //定义数据

       return{

        //返回数据

       }

     }

五、ref reactive来定义响应式数据

  1、数据是基本数据

    需要使用ref来包裹基本数据类型数据,使用时需要.value来获取值

  2、数据是对象

    需要使用reactive来包裹复杂数据类型数据

  3、使用

    --先导入ref和reactive

      import {ref,reactive} from 'vue'

    --基本数据类型

      let message = ref('this is basic data type')

    --复杂数据类型

      let user = reactive({

        name:'jack',

        age:18

      })

六、toRefs

  概念:toRefs会将我们一个响应式的对象转变为一个普通对象,然后将这个普通对象里的每一个属性变为一个响应式的数据

  使用:

   --先导入toRefs

    import {toRefs} from 'vue'

   --在setup中返回数据的地方加入...toRefs(数据)

   --在显示数据时,即可不用在对象名.值

    例:

      template中

        <h1>{{name}}</h1>

      setup定义数据中

        let user = reactive({

          name:'jack',

          age:18

        })

      setup返回数据中

        return{

          ...toRefs(user)

        }

七、script Setup(vue3.2版本)

  概念:只需要在script标签中加上setup属性,组件在编译的过程中代码运行的上下文是在setup()函数中,无需return,template可以直接使用

  语法:

   <script setup>

     //定义响应式数据即可

   </script>

八、计算属性(computed)

  语法:

     const count = computed(()=>{

       return  num.value * 2//计算的值

     })

     表示侦听num值的变化,变化时执行count中的计算

九、侦听(watch)

  语法:

   watch(侦听的对象,(newVal,oldVal){

      //侦听需要做的操作

   },{inmediate:ture,deep:true})

   三个参数:

      1、侦听的对象

      2、侦听后的回调函数

      3、可选项,

十、组件通讯

  定义一个子组件Chlid,在父组件中引入使用,在父组件使用子组件的地方绑定一个自定义事件

   <Child name="rose"></Child>

  1、父传子

   setup方法:

     --使用props定义props

       props{

        name:String

       }

     --在setup中使用props

       setup(props){

        return {

          props

         }

       }

     --template中直接{{props.name}}即可使用

   3.2setup版本方法:

     --导入defineProps(可不导入)

       import {defineProps} from 'vue'

     --直接定义接收参数

       const props = defineProps({

        name:String

       })          

     --页面直接使用即可                                      

  2、子传父  

   方法一:

     --在父组件使用子组件的地方,自定义方法

      @getmessage="getmessage"  getmessage为方法执行的函数

     --在setup中使用defineEmits接收父组件的自定义的方法名,赋值给emit

      const emit = defineEmits(['getmessage'])

      const emit = defineEmits(['自定义方法名'])

     --在子组件中定义一个触发事件用于传输参数

       @click="sendMessage"

     --执行sendMessage事件传输值

       const sendMessage = ()=>{

        emit('getmessage','hello')

        emit('自定义方法名','参数')

       }

     --在父组件中执行自定义方法,接收参数

      const getmessage = (接收到的形参) =>{

        //函数体

      }

   方法二(实现父子之间双向绑定):

      --先父传子:

        --在父组件使用子组件的地方使用v-model绑定需要传送给子组件的值

         <Child v-model:age="user.age"></Child>

        --在子组件setup中的defineProps中接收值并定义类型即可

          const props = defineProps({

            age:Number

          })

      --再子传父:

        --在子组件中定义一个触发事件用于传输参数

          @click="sendMessage"

        --在setup中使用defineEmits定义update:修改的值

          const emit = defineEmits(['update:age'])

        --执行sendMessage事件传输值

          const sendMessage = ()=>{

            emit('update:age',50)

            emit('自定义方法名','参数')

          }

        --在父组件中直接使用即可实现父子组件的双向绑定

十一、插槽

  1、使用solt定义插槽,可以定义name属性给插槽定义名称,在父组件中使用#名称表示

  2、作用域插槽

    --使用scope传输值

     <slot name="footer" :scope="需要传送的响应式值">

      例setup中:

        const user = reactive({

          name:'jack',

          age:18

        })

    --使用插槽的位置

     <template #footer="{scope}">

       <span>姓名:{{scope.name}}---年龄:{{scope.age}}</span>

     </template>

十二、路由useRoute和useRouter

  1、引入useRoute和useRouter

   import {useRoute,useRouter} from 'vue-router'

十三、Vuex store

  1、引入useStore即可使用vuex中的dispatch和getters方法

   import {useStore} from 'vuex'

   const store = useStore()

   store.dispatch和store.getters

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值