美文网首页
v3 随手记

v3 随手记

作者: 仰望天空的人 | 来源:发表于2023-03-09 10:24 被阅读0次
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

<div id="app">{{ message }}</div>

<script>
  const { createApp } = Vue
  
  createApp({
    data() {
      return {
        message: 'Hello Vue!'
      }
    }
  }).mount('#app')
</script>
<div id="app">{{ message }}</div>

<script type="module">
  import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'
  
  createApp({
    data() {
      return {
        message: 'Hello Vue!'
      }
    }
  }).mount('#app')
</script>

注意我们使用了 <script type="module">,且导入的 CDN URL 指向的是 Vue 的 ES 模块构建版本。

<script type="importmap">
  {
    "imports": {
      "vue": "https://unpkg.com/vue@3/dist/vue.esm-browser.js"
    }
  }
</script>

<div id="app">{{ message }}</div>

<script type="module">
  import { createApp } from 'vue'

  createApp({
    data() {
      return {
        message: 'Hello Vue!'
      }
    }
  }).mount('#app')
</script>

vue3:
除了components,全部包到setup()函数中,或者 <script setup>
import { nextTick,onMounted } from 'vue'; // 显式导入
const state = reactive({}),let qrcodelen = computed(() => {}),const methods = {}, onMounted(() => {}),
<script setup>不需要这一步
return{...toRefs(state), ...methods,qrcodelen}

let job=ref({}),function say(){ job.value.salary='12k' },相当于state,

import { useRouter } from "vue-router";
const router = useRouter();
router.push("/shopIntegral/createRule");

import { toRefs, defineProps } from 'vue'
const props = defineProps({
  //子组件接收父组件传递过来的值
  info: String,
})
//使用父组件传递过来的值
const {info} =toRefs(props)


日期组件
const disabledDate = (time: Date) => {
    // console.log(time);
    let curDate = new Date();
    let preDate = new Date(curDate.getTime() - 48 * 60 * 60 * 1000);
    let nextDate = new Date(curDate.getTime() + 30 * 24 * 60 * 60 * 1000);
    return time.getTime() < preDate || time.getTime() > nextDate
};



// deepClone
export function deepClone(obj) {
    let objClone = Array.isArray(obj) ? [] : {}
    if (obj && typeof obj === 'object') {
        for (let key in obj) {
            if (obj.hasOwnProperty(key)) {
                if (obj[key] && typeof obj[key] === 'object') {
                    objClone[key] = deepClone(obj[key])
                } else {
                    objClone[key] = obj[key]
                }
            }
        }
    }

    return objClone
}
// 可以多元素
<template>
  <header></header>
  <main></main>
  <footer></footer>
</template>

异步组件(Suspense)

Vue3 提供 Suspense 组件,允许程序在等待异步组件加载完成前渲染兜底的内容,如 loading ,使用户的体验更平滑。使用它,需在模板中声明,
并包括两个命名插槽:default 和 fallback。Suspense 确保加载完异步内容时显示默认插槽,并将 fallback 插槽用作加载状态。

<tempalte>
  <suspense>
    <template #default>
      <List />
    </template>
    <template #fallback>
      <div>
        Loading...
      </div>
    </template>
  </suspense>
</template>

Teleport

Vue3 提供 Teleport 组件可将部分 DOM 移动到 Vue app 之外的位置。比如项目中常见的 Dialog 弹窗。
<teleport to="body">
  <div class="dialog" v-if="dialogVisible">
    我是弹窗,我直接移动到了body标签下
  </div>
</teleport>

调用子组件方法

<Son ref="RefChilde"></Son>
const RefChilde = ref();     //RefChilde 要和Son组件上的class名相同
const fnCallChild = () => {
      RefChilde.value.sonFn();      //sonFn是子组件里的方法
    };

2021.6记录点

相关文章

网友评论

      本文标题:v3 随手记

      本文链接:https://www.haomeiwen.com/subject/rkjrqdtx.html