首页 > Windows开发 > 详细

686 vue3 Composition API:setup的this、参数、返回值,rReactive ,ref,readonly,,,,,,,,,,,,,,,

时间:2021-06-18 23:44:02      阅读:51      评论:0      收藏:0      [点我收藏+]

Options API的弊端

技术分享图片


大组件的逻辑分散

技术分享图片


认识Composition API

技术分享图片


setup函数的参数

技术分享图片


setup函数的返回值

技术分享图片


setup不可以使用this

技术分享图片


技术分享图片


App.vue

<template>
  <div>
    <home message="hahahaha" id="aaa" class="bbbb"></home>
  </div>
</template>

<script>
  import Home from "./Home.vue";

  export default {
    components: {
      Home,
    },
  };
</script>

<style scoped></style>

02_setup的参数.vue

<template>
  <div>
    <h3>Home Page</h3>
    <h3>{{ message }}</h3>

    <h2>{{ title }}</h2>
    <h2>当前计数: {{ counter }}</h2>
    <button @click="increment">+1</button>
  </div>
</template>

<script>
  export default {
    props: {
      message: {
        type: String,
        required: true,
      },
    },
    data() {
      return {
        counter: 100,
      };
    },
    /**
     * 参数一: props, 父组件传递过来属性
     */
    // setup函数有哪些参数?
    // setup函数有什么样的返回值
    // setup(props, context) {
    setup(props, { attrs, slots, emit }) {
      console.log(props.message);
      console.log(attrs.id, attrs.class);
      console.log(slots);
      console.log(emit);

      return {
        title: "Hello Home",
        counter: 100,
      };
    },
    methods: {
      btnClick() {
        this.$emit("");
      },
    },
  };
</script>

<style scoped></style>

03_setup的返回值.vue

<template>
  <div>
    Home Page
    <h2>{{ message }}</h2>

    <h2>{{ title }}</h2>
    <h2>当前计数: {{ counter }}</h2>
    <button @click="increment">+1</button>
  </div>
</template>

<script>
  export default {
    props: {
      message: {
        type: String,
        required: true,
      },
    },
    setup() {
      let counter = 100;

      // 局部函数
      const increment = () => {
        counter++;
        console.log(counter);
      };

      return {
        title: "Hello Home",
        counter,
        increment,
      };
    },
  };
</script>

<style scoped></style>

Reactive API

技术分享图片


04_reactiveAPI使用.vue

<template>
  <div>
    Home Page
    <h2>{{ message }}</h2>
    <h2>当前计数: {{ state.counter }}</h2>
    <button @click="increment">+1</button>
  </div>
</template>

<script>
  import { reactive } from "vue";

  export default {
    props: {
      message: {
        type: String,
        required: true,
      },
    },
    setup() {
      const state = reactive({
        counter: 100,
      });

      // 局部函数
      const increment = () => {
        state.counter++;
        console.log(state.counter);
      };

      return {
        state,
        increment,
      };
    },
  };
</script>

<style scoped></style>

Ref API

技术分享图片


Ref自动解包

技术分享图片


05_refAPI使用.vue

<template>
  <div>
    Home Page
    <h2>{{ message }}</h2>
    <!-- 当我们在template模板中使用ref对象, 它会自动进行解包 -->
    <h2>当前计数: {{ counter }}</h2>
    <button @click="increment">+1</button>

    <show-message :message="counter"></show-message>
  </div>
</template>

<script>
  import { ref } from "vue";

  export default {
    props: {
      message: {
        type: String,
        required: true,
      },
    },
    setup() {
      // counter编程一个ref的可响应式的引用
      // counter = 100;
      let counter = ref(100);

      // 局部函数
      const increment = () => {
        counter.value++;
        console.log(counter.value);
      };

      return {
        counter,
        increment,
      };
    },
  };
</script>

<style scoped></style>










































686 vue3 Composition API:setup的this、参数、返回值,rReactive ,ref,readonly,,,,,,,,,,,,,,,

原文:https://www.cnblogs.com/jianjie/p/14901434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!