14步入门Vue|cn.vuejs.org教程学习笔记

【参考资料】

  1. 开始:略

  2. 声明式渲染

    • 能在改变时触发更新的状态被称作是响应式的。

    • 响应式状态声明:

      • Vue 的 reactive(<object>) API :可以使用它来声明响应式状态。该API返回的对象都是 JavaScript Proxy,其行为与普通对象一样。<object>可以是任意对象,包括Map和Set。

      • Vue 的 ref(<any>) API :返回一个包裹对象,可以通过.value属性访问其内部值。

    • mustache 双花括号语法:在模板中使用响应式状态或JS表达式

    • 示例代码:

      js 复制代码
      //sample for reactive
      import { reactive } from 'vue'
      
      const counter = reactive({
        count: 0
      })
      
      console.log(counter.count) // 0
      counter.count++
      //sample for ref
      import { ref } from 'vue'
      
      const message = ref('Hello World!')
      
      console.log(message.value) // "Hello World!"
      message.value = 'Changed'
      html 复制代码
      <h1>{{ message }}</h1>
      <p>Count is: {{ counter.count }}</p>
      <!-- 我们在模板中访问 ref 不需要使用 .value:它会被自动解包,让使用更简单。 -->
  3. Attribute绑定:

    • 想要响应式地绑定一个 attribute,应该使用 v-bind 指令:v-bind:<attr-name>=<attr-value>
    • 如果attr-name=id,attr-value="daynamicId",那么元素的id属性将与组件状态里的 dynamicId 属性保持同步。
    • 该指令可以简写为:<attr-name>=<attr-value>
    • 3.4版本及以上:如果 attribute 的名称与绑定的 JavaScript 变量的名称相同,那么可以进一步简化语法,省略 attribute 值。
    • 绑定 null 或者 undefined:该 attribute 将会从渲染的元素上移除。
    • 绑定布尔值:依据 true / false 值来决定 attribute 是否应该存在于该元素上。disabled 就是最常见的例子之一。当 isButtonDisabled 为真值或一个空字符串 (即 <button disabled="">) 时,元素会包含这个 disabled attribute。而当其为其他假值时 attribute 将被忽略。
    • 绑定对象:适用于绑定的值较多的场景。
  4. 事件监听:可以使用v-on指令监听DOM事件,比如:

    jsx 复制代码
    <button v-on:click="increment">{{ count }}</button>
    <button @click="increment">{{ count }}</button>
  5. 表单绑定:v-model 会将被绑定的值与 <input> 的值自动同步,这样我们就不必再使用事件处理函数了。

  6. 条件渲染:可以使用v-if指令有条件地渲染元素,也可以用v-elsev-else-if来表示其他的条件分支。

  7. 列表渲染:可以使用v-for指令来渲染一个基于源数组的列表。更新列表有两种方式:在源数组上调用变更方法;使用新的数组替代原数组。

    jsx 复制代码
    <ul>
      <li v-for="todo in todos" :key="todo.id">
        {{ todo.text }}
      </li>
    </ul>
  8. 计算属性:computed()可以让我们创建一个计算属性 ref,这个 ref 会动态地根据其他响应式数据源来计算其 .value

  9. 生命周期和模板引用:

    • 声明一个ref,然后在元素中通过ref属性实现引用。模板引用 ref 只能在组件挂载后访问。
    • 要在挂载之后执行代码,可以使用 onMounted() 函数。
  10. 侦听器:用于响应性地执行一些"副作用"。watch() 可以直接侦听一个 ref,并且只要 ref 的值改变就会触发回调。

    jsx 复制代码
    import { ref, watch } from 'vue'
    
    const count = ref(0)
    
    watch(count, (newCount) => {
      // 执行副作用
      console.log(`new count is: ${newCount}`)
    })
  11. 组件:父组件可以在模板中渲染另一个组件作为子组件,示例如下:

    jsx 复制代码
    import ChildComp from './ChildComp.vue'
    jsx 复制代码
    <ChildComp />
  12. Props:子组件可以通过 props 从父组件接受动态数据,首先声明其所接受的 props,然后在模板中使用。

    vue 复制代码
    <script setup>
    const props = defineProps({
      msg: String
    })
    </script>
  13. Emits:用于子组件向父组件触发事件。

    vue 复制代码
    <script setup>
    // 声明触发的事件
    const emit = defineEmits(['response'])
    // 带参数触发
    emit('response', 'hello from child')
    </script>
    html 复制代码
    <!-- 父组件可以使用 v-on 监听子组件触发的事件,比如这里的处理函数onresponse接收了子组件触发事件时的额外参数并将它赋值给了本地状态 -->
    <ChildComp @response="(msg) => childMsg = msg" />
  14. 插槽:子组件如果有innerHTML,则innerHTML会传递为子组件的插槽。在子组件中,可以使用 <slot> 元素作为插槽出口渲染父组件中的插槽内容,<slot> 中的内容将被当作默认内容,在innerHTML为空时显示。

相关推荐
运筹vivo@2 小时前
BUUCTF: [SUCTF 2019]EasySQL
前端·web安全·php
是席木木啊3 小时前
RuoYi-Vue-Plus UI前端页面布局调整
前端·vue.js·ui
Web极客码5 小时前
WordPress 6.8有哪些新特性
前端·javascript·html
UXbot10 小时前
UI设计工具推荐合集
前端·人工智能·ui
码路星河10 小时前
基于 Vue + VueUse 的 WebSocket 优雅封装:打造高可用的全局连接管理方案
javascript·vue.js·websocket
摘星编程10 小时前
React Native + OpenHarmony:Accelerometer计步器代码
javascript·react native·react.js
敲敲了个代码10 小时前
如何优化批量图片上传?队列机制+分片处理+断点续传三连击!(附源码)
前端·javascript·学习·职场和发展·node.js
@AfeiyuO11 小时前
Vue 引入全局样式scss
前端·vue·scss
光影少年11 小时前
flex布局和grid布局区别,实现两边固定布局中间自适应
前端·css3·web·ai编程