Vue3vite实战知识点整理1

/

代码 setup 函数内,通过 refreactive 创建两个变量,如果 setup 返回一个对象,则对象的属性将会被合并到模板变量的渲染上下文,也就是在 template 模板里,可以使用 setup 函数返回的对象内容(包括函数方法)。

//改造App.vue

<template>
  <div>{{count}}{{state.foo}}</div>
</template>

<script>
 import {ref,reactive} from 'vue'
 export default{
   setup(){
     const count=ref(0)
     const state=reactive({foo:'bar'})

     return{
       count,
       state,
     }
   }

 }
</script>
<template>
  <div>{{count}}{{state.foo}}</div>
</template>

<script>
 import {ref,reactive} from 'vue'
 export default{
   setup(){
     const count=ref(0)
     const state=reactive({foo:'bar'})
     setTimeout(()=>{
       count.value=1
       state.foo='foo'
     },2000)

     return{
       count,
       state,
     }
   }

 }
</script>

通过 refreactive 方法包裹的变量,会被赋予响应式的能力,也就是说你在 setup 函数内改变他们的值,模板内也会响应展示改变后的值

//h 函数是 createElement 的别名,//Vue 提供了createElement 来创建虚拟dom
setup 也可以返回一个函数,函数中也能使用当前 setup 函数作用域中的响应式数据

<template>
  <div>{{count}}{{state.foo}}</div>
</template>

<script>
 import {ref,reactive,h} from 'vue'
 export default{
   setup(){
     const count=ref(1)
     const state1=reactive({foo:'bar'})
  
     return ()=>h('h1',[count.value,state1.foo])
   }

 }
</script>

通过 h 函数,将 count.value(在 setup 函数作用域内,需要使用 .value 获取值) 和 object.foo 渲染到 h1 标签内。

props 对象:

<template>
  <Test :count="count"></Test>
</template>

<script>
import { ref } from 'vue'
import Test from './components/Test.vue'

export default {
  components: {
    Test
  },
  setup() {
    const count = ref(0)
    return {
      count
    }
  }
}
</script>

子:src/components 下新增 Test.vue 组件

<template>
  <div>{{ count }}</div>
</template>

<script>
export default {
  name: 'Test',
  props: {
    count: Number
  },
  setup(props) {
    console.log('props', props)
  }
}
</script>

在页面中我们打印了 props,可以发现它被 Proxy 代理过,这是 Vue 3.0 实现响应式的核心 API,也就是说从父亲组件传到子组件的 count 变量,已经是响应式数据

并且在子组件内,可以通过 watchEffect 和 watch 观察到数据的变化情况

注意 props 不要进行解构,如 setup(...props),这样会让 props 失去响应式。

// App.vue
...
setup() {
  const count = ref(0)
  setTimeout(() => {
    count.value = 100
  }, 2000)
  return {
    count
  }
}
...

// Test.vue
...
import { watchEffect } from 'vue'
setup(props) {
  watchEffect(() => {
    console.log('props.count = ', props.count)
  })
}
...

context 上下文

ctx(context)参数提供了一个上下文对象,从原来的 Vue 2.0 中的 this 选择性的暴露一些属性。

ctx 为我们提供了三个属性,分别是:

  • attrs
  • slots
  • emit

attrs 为我们提供了最新传入的数据 ,在使用 attrs 时候,不能在 options 中声明 props ,否则 attrs 取不到变量

<template>
  <div>{{ count }}</div>
</template>

<script>
import { watchEffect } from 'vue'
export default {
  name: 'Test',
//   props: {
//     count: Number
//   },
  setup(props,ctx) {
    console.log('props', props)
     console.log('ctx',ctx.attrs.count)

     return{
         attrs:ctx.attrs
     }
  
  }
}
</script>

子组件调用父组件传进来的方法,并且带上回调参数

子组件接收的方法,需要通过 emits 在 options 中注册,否则会报警告。通过上下文 ctx.emit 触发传进来的方法以及返回相应的回调参数

// App.vue
<template>
  <Test :count="count" @add="add"></Test>
</template>

<script>
import { ref } from 'vue'
import Test from './components/Test.vue'

export default {
  name: 'App'
  components: {
    Test
  },
  setup() {
    const count = ref(0)
    const add = (num) => count.value += num
    return {
      count,
      add
    }
  }
}
</script>

// Test.vue
<template>
  <div>{{ count }}</div>
  <button @click="add">++++</button>
</template>

<script>
import { watchEffect } from 'vue'
export default {
  name: 'Test',
  props: {
    count: Number,
    add: Function
  },
  emits: ['add'],
  setup(props, ctx) {
    const add = () => {
      ctx.emit('add', 50)
    }
    
    return {
      add
    }
  }
}
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Vue 3 + Vite + TypeScript 的项目实战,你可以按照以下步骤进行: 1. 创建项目:使用 Vue CLI 创建一个新的 Vue 3 项目,同时选择 TypeScript 作为语言支持。如果你还没有安装 Vue CLI,可以先通过 npm 全局安装它:`npm install -g @vue/cli`。然后运行`vue create my-project`命令创建项目,并选择 TypeScript 作为预设。 2. 构建工具:Vue CLI 默认使用 webpack 作为构建工具,但是对于 Vue 3,你可以尝试使用 ViteVite 是一个基于 ES Modules 的开发服务器,在开发模式下具有非常快的冷启动速度。安装 Vite:`npm install -g create-vite`,然后在项目目录下运行`create-vite`命令创建一个新的 Vite 项目。 3. 配置:根据你的项目需求,配置 Vite 和 TypeScript。你可以编辑 `vite.config.ts` 文件来自定义 Vite 的配置,例如添加插件、配置别名等。此外,还需要编辑 `tsconfig.json` 文件来配置 TypeScript 相关的选项,如指定编译输出目录、允许的模块类型等。 4. 开发:开始编写代码!在 `src` 目录中创建你的组件、页面和其他文件。Vue 3 的语法和 API 与 Vue 2 有一些差异,你可以查阅 Vue 3 的官方文档获取更多信息。同时,由于你选择了 TypeScript,可以利用其类型系统来提供更好的开发体验和代码质量。 5. 运行项目:在项目根目录下运行`npm run dev`命令,启动 Vite 的开发服务器。然后在浏览器中访问 `http://localhost:3000`,即可看到你的项目运行起来。 6. 构建和部署:当你的项目开发完成后,可以使用`npm run build`命令构建生产环境的代码。Vite 会将你的代码打包成优化过的 ES Modules 格式,以提供更好的加载性能。构建完成后,你可以将生成的静态文件部署到你喜欢的服务器或者托管平台上。 希望以上的步骤能够帮助你进行 Vue 3 + Vite + TypeScript 的项目实战!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值