vuejs內建元件有哪些

青灯夜游
發布: 2023-01-07 11:47:22
原創
2422 人瀏覽過

vuejs內建元件有:「」、「」、「」、「」、 “”、“”。

vuejs內建元件有哪些

本教學操作環境:windows7系統、vue2.9.6版,DELL G3電腦。

vue 內建元件

內建元件可以直接在範本中使用,而不需註冊。

組件都可以被打包工具 tree-shake。所以它們只會在被使用的時候被引入。如果你需要直接存取它們,也可以將它們顯性匯入。

// Vue 的 CDN 构建版本
const { KeepAlive, Teleport, Transition, TransitionGroup } = Vue
登入後複製
// Vue 的 ESM 构建版本
import { KeepAlive, Teleport, Transition, TransitionGroup } from 'vue'
登入後複製

是模板語法中元件形式的特性。它們不是真正的元件且無法像上述元件那樣被導入。

下面要簡單介紹一下vuejs中的內建元件。


#多重應用程式與建立動態元件

參數有is 和inline-template,前者多為字串或自訂元件,後者為布林類型,

程式碼範例

<template>
  <div class="hello">
      <!-- 构建动态组件 -->
      <div :is="currentComp"></div>
      <!-- 按钮点击切换组件 -->
      <button v-on:click="changeComponent">改变组件</button>
  </div>
</template>

<script>
//两个自定义的组件
import login from &#39;../components/login.vue&#39;
import index from &#39;../components/index.vue&#39;
export default {
  name: &#39;BuildInComponent&#39;,
  components:{
      index,
      login
  },
  // 默认显示index组件
  data(){
      return {
          currentComp:index
      }
  },
  methods:{
      changeComponent(){
          if(this.currentComp == login){
              this.currentComp = index
          }else {
              this.currentComp = login
          }

      }
  }
}
</script>
登入後複製
##



包裹動態元件時,會快取不活動的元件實例,而不是銷毀它們。和 相似, 是抽像元件:它本身不會渲染一個 DOM 元素,也不會出現在父元件鏈中。
此元件上的屬性有 include,exclude,max,前兩者為字串或這則表達式,快取/不快取匹配到的元件,max表示最多可以快取的元件數目。

符合先檢查元件本身的 name 選項,如果 name 選項不可用,則符合它的局部註冊名稱 (父元件 components 選項的鍵值)。匿名組件不能被匹配。
此元件通常與v-show,v-if,v-else-if,v-else,is等包含條件的元件結合使用

程式碼範例

<template>
  <div class="hello">
      <!-- 使用keep-alive组件包裹其它条件渲染组件,不符合条件的则会被缓存,等下次条件成立时,则会立即渲染,提高渲染效率 -->
      <keep-alive>
          <div v-if="condition == 1">
              <span>我是111111111111</span>
          </div>
          <div v-else-if="condition == 2">
              <span>我是222222222222222</span>
          </div>
          <div v-else>
              <span>我是333333333333</span>
          </div>
      </keep-alive>

  </div>
</template>

<script>
export default {
  name: &#39;BuildInComponent&#39;,
  data(){
      return {
          condition:parseInt(Math.random()*3)
      }
  },


  
 
}
</script>
登入後複製



#加入被包裹元素的過渡效果, 元素作為單一元素/組件的過渡效果。 只會把過渡效果套用到其包裝的內容上,而不會額外渲染 DOM 元素,也不會出現在偵測過的元件層級。
通常與v-show v-if is等組合使用;
有css過渡和js過渡

常用屬性:name:字串,用於自動產生CSS 過渡類別名稱;css:布林類型,是否使用CSS 過渡類別。預設為 true。如果設定為false,只會透過元件事件觸發註冊的JavaScript 鉤子
也可以透過enter-class,leave-class等屬性,自訂類別名,通常在和第三方的動畫函式庫時結合使用;
  • css過渡

    css過渡的類別名稱有transition屬性的name屬性值(記作v,若沒有name屬性值,則預設為v-),組合以下幾種構成:
    1. v-enter:定義進入過渡的開始狀態。在元素被插入之前生效,在元素被插入之後的下一幀移除。
    2. v-enter-active:定義進入過渡生效時的狀態。在整個進入過渡的階段中應用,在元素插入之前生效,在過渡/動畫完成之後移除。這個類別可以被用來定義進入過渡的過程時間,延遲和曲線函數。
    3. v-enter-to: 2.1.8版以上 定義進入過渡的結束狀態。在元素插入之後下一幀生效 (同時 v-enter 被移除),在過渡/動畫完成之後移除。
    4. v-leave: 定義離開過渡的開始狀態。在離開過渡期被觸發時立刻生效,下一幀被移除。
    5. v-leave-active:定義離開過渡生效時的狀態。在整個離開過渡的階段中應用,在離開過渡被觸發時立刻生效,在過渡/動畫完成之後移除。這個類別可以被用來定義離開過渡的過程時間,延遲和曲線函數。
    v-leave-to: 2.1.8版以上 定義離開過渡的結束狀態。在離開過渡被觸發之後下一幀生效 (與此同時 v-leave 被刪除),在過渡/動畫完成之後移除。

程式碼範例######
<template>
  <div class="hello">
      <!-- css过渡示例,transition组件 名称为slide-fade, -->
      <div id="example-1">
        <button @click="show = !show">
            Toggle render
        </button>
        <transition name="slide-fade">
            <p v-if="show">hello</p>
        </transition>
      </div>
        <!-- css动画示例 -->
      <div id="example-2">
        <button @click="show = !show">Toggle show</button>
        <transition name="bounce">
            <p v-if="show">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris facilisis enim libero, at lacinia diam fermentum id. Pellentesque habitant morbi tristique senectus et netus.</p>
        </transition>
      </div>

  </div>
</template>

<script>
export default {
  name: &#39;BuildInComponent&#39;,
  data(){
      return {
          show: true
      }
  },
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
/* 可以设置不同的进入和离开动画 */
/* 设置持续时间和动画函数 */
.slide-fade-enter-active {
  transition: all .3s ease;
}
.slide-fade-leave-active {
  transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.slide-fade-enter, .slide-fade-leave-to
/* .slide-fade-leave-active for below version 2.1.8 */ {
  transform: translateX(10px);
  opacity: 0;
}

/* 也可以使用css动画 */
.bounce-enter-active {
  animation: bounce-in .5s;
}
.bounce-leave-active {
  animation: bounce-in .5s reverse;
}
@keyframes bounce-in {
  0% {
    transform: scale(0);
  }
  50% {
    transform: scale(1.5);
  }
  100% {
    transform: scale(1);
  }
}
</style>
登入後複製
  • js过渡

也可以在属性中声明 JavaScript 钩子函数,在钩子函数中,使用js进行动画的操作;
当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成
对于仅使用 JavaScript 过渡的元素添加 v-bind:css=“false”,Vue 会跳过 CSS 的检测。这也可以避免过渡过程中 CSS 的影响。

// 使用js过渡,通常在组件中监听事件,并写好监听到的回调函数即可<transition
  v-on:before-enter="beforeEnter"
  v-on:enter="enter"
  v-on:after-enter="afterEnter"
  v-on:enter-cancelled="enterCancelled"

  v-on:before-leave="beforeLeave"
  v-on:leave="leave"
  v-on:after-leave="afterLeave"
  v-on:leave-cancelled="leaveCancelled">
  <!-- ... --></transition>
登入後複製

Props:

  • tag - string - 如果未定义,则不渲染动画元素。

  • move-class - 覆盖移动过渡期间应用的 CSS 类。

  • 除了 mode - 其他 attribute 和 相同。

事件:

  • 事件和 相同。

用法:

提供了多个元素/组件的过渡效果。默认情况下,它不会渲染一个 DOM 元素包裹器,但是可以通过 tag attribute 来定义。

注意,每个 的子节点必须有独立的 key,动画才能正常工作。

支持通过 CSS transform 过渡移动。当一个子节点被更新,从屏幕上的位置发生变化,它会被应用一个移动中的 CSS 类 (通过 name attribute 或配置 move-class attribute 自动生成)。如果 CSS transform property 是“可过渡” property,当应用移动类时,将会使用 FLIP 技术使元素流畅地到达动画终点。

<transition-group tag="ul" name="slide">
  <li v-for="item in items" :key="item.id">
    {{ item.text }}
  </li>
</transition-group>
登入後複製

vue的内容分发非常适合“固定部分+动态部分”的组件的场景,固定部分可以是结构固定,也可以是逻辑固定,比如下拉loading,下拉loading只是中间内容是动态的,而拉到底部都会触发拉取更多内容的操作,因此我们可以把下拉loading做成一个有slot的插件

Props:

  • name - string,用于具名插槽

用法:

  • 元素作为组件模板之中的内容分发插槽。 元素自身将被替换。

Props:

  • to - string。需要 prop,必须是有效的查询选择器或 HTMLElement (如果在浏览器环境中使用)。指定将在其中移动 内容的目标元素

<!-- 正确 -->
<teleport to="#some-id" />
<teleport to=".some-class" />
<teleport to="[data-teleport]" />

<!-- 错误 -->
<teleport to="h1" />
<teleport to="some-string" />
登入後複製

disabled - boolean。此可选属性可用于禁用 的功能,这意味着其插槽内容将不会移动到任何位置,而是在你在周围父组件中指定了 的位置渲染。

<teleport to="#popup" :disabled="displayVideoInline">
  <video src="./my-movie.mp4">
</teleport>
登入後複製

请注意,这将移动实际的 DOM 节点,而不是被销毁和重新创建,并且它还将保持任何组件实例的活动状态。所有有状态的 HTML 元素 (即播放的视频) 都将保持其状态。

相关推荐:《vue.js教程

以上是vuejs內建元件有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
vue
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板