• Vue3中的setup和ref && reactive函数


    vue3常用composition API

    一、拉开序幕的setup

    1.setup是所有composition API 的平台,他是vue3的新的配置项,值为一个函数;

    2.组件中所用到的:数据,方法等等,全部配置到setup中。

    3.setup的两种返回值:

            (1)返回一个对象,其中的对象为本身定义的属性,方法,在模板中可以直接使用

         (2)返回一个渲染函数:则可以自定义渲染的内容

    4.vue2中的配置(data、methods、computed等)不要和setup一起使用;

    vue2中可以访问setup中的属性方法,但是setup不能访问vue2的配置属性、方法

    当属性、方法重名冲突时,setup优先;

    1. <script>
    2. // import {h} from 'vue'
    3. export default {
    4. name: 'App',
    5. components: {
    6. },
    7. setup(){
    8. /*数据*/
    9. let name = '张三'
    10. let age = 18
    11. /* 方法*/
    12. const say = () =>{
    13. alert('我的名字叫' + name,`我今年${age}岁`)
    14. }
    15. //1.返回对象
    16. return {
    17. name,
    18. age,
    19. say
    20. }
    21. //2.渲染函数
    22. // return () => h('h1','我是渲染函数')
    23. }
    24. }
    25. script>

    二、main.js文件配置

    vue3引入的是createApp的工厂函数;

    1. /* vue3不在是引入vue构造函数,引入的是一个名为createApp的
    2. * 工厂函数
    3. * */
    4. import { createApp } from 'vue'
    5. import App from './App.vue'
    6. // createApp(App).mount('#app')
    7. /* 创建应用实例对象--app(类似之前vue2的vm)*/
    8. const app = createApp(App)
    9. /* 挂载*/
    10. app.mount('#app')
    11. /* unmount卸载挂载*/
    12. // setTimeout(()=>{
    13. // app.unmount('#app')
    14. // },2000)

    三、ref函数

    作用:定义一个响应式的数据

    语法:const xxx = ref(数据)

            (1)创建一个包含响应式数据的引用对象(ref对象)

            (2)js中操作数据,使用 xxx.value 那到数据 

            (3)在模板中使用数据时,不需要 xxx.value,直接使用

    {{xxx}}

    注意:可以处理基本数据类型,也可以处理引用数据类型;

    1. <script>
    2. /* 引入ref函数 ,实现响应式数据 */
    3. import {ref} from 'vue'
    4. export default {
    5. name: 'App',
    6. setup(){
    7. /*数据*/
    8. let name = ref('张三')
    9. let age = ref(18)
    10. let job = ref({
    11. type:'前端工程师',
    12. salary:30000
    13. })
    14. const changeInfo = ()=>{
    15. name.value = '李四'
    16. age.value = 25
    17. job.value.type = 'UI设计师'
    18. job.value.salary = '1000'
    19. console.log(job.value)
    20. }
    21. //1.返回对象
    22. return {
    23. name,
    24. age,
    25. job,
    26. changeInfo
    27. }
    28. }
    29. }
    30. script>

    四、reactive函数

    (1)作用:定义一个对象类型(对象或者数组)的响应式数据(基本类型使用ref函数)

    (2)语法:const 代理对象 = reactive(源对象),接收一个对象或者数组,返回一个代理对象(Proxy的实例对象,简称proxy对象)

    (3)reactive定义的响应式数据是深层次的;

    (4)内部基于ES6的Proxy实现,通过代理对象操作源对象内部数据

    五、vue2和vue3中响应式数据

    (1)vue2中对data数据操作响应式

    方法:vm.$set(),vm.delete()方法;或者数组的splice()方法