vue3中如何使用ts

 更新时间:2022年05月30日 10:27:17   作者:万事胜意sy  
这篇文章主要介绍了vue3中如何使用ts,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

如何使用ts

在创建vue脚手架的时候吧typescript选上

app.vue

<template>
  <!-- <div id="nav">
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link>
  </div>
  <router-view/> -->
  <div id="root">
    <div className="todo-container">
      <div className="todo-wrap">
        <Header :addtodo="addtodo"/>
        <List :todos="state.todos" />
        <Footer />
      </div>
    </div>
  </div>
</template>
<script lang="ts">
import { defineComponent, reactive } from "vue";
import Footer from "./components/footer/footer.vue";
import Header from "./components/header/header.vue";
import List from "./components/list/list.vue";
//导入接口类型
import {todo} from "./type/todo"
export default defineComponent({
  components: { List, Header, Footer },
  setup() {
    const state = reactive({
      todos: [
        { id: 1, title: "吃饭", isture: true },
        { id: 2, title: "睡觉", isture: false },
        { id: 3, title: "打游戏", isture: false },
        { id: 4, title: "打代码", isture: true },
      ],
    });
    //定义一个方法用来接收输入框里面传来的数据并把它加到state.todos里面面
    const addtodo=(todo:todo)=>{
      state.todos.unshift(todo)
    }
    return {
      state,
      addtodo
    };
  },
});
</script>
<style>
@import "./App.css";
</style>

header.vue

<template>
  <div class="todo-header">
    <input
      type="text"
      placeholder="请输入你的任务名称,按回车键确认"
      v-model="title"
      @keyup.enter="add"
    />
  </div>
</template>
<style scoped>
@import "./header.css";
</style>
<script lang="ts">
import { defineComponent, ref } from "vue";
//导入接口类型
import { todo } from "../../type/todo";
export default defineComponent({
  props: {
    addtodo: {
      type: Function,
      required: true,
    },
  },
  setup(props) {
    const title = ref("");
    const add = () => {
      if (title.value == "") {
        alert("请输入内容");
      }
      const todo: todo = {
        id: Date.now(),
        title: title.value,
        isture: false,
      };
      props.addtodo(todo);
      title.value=''
    };
    return {
      add,
      title,
    };
  },
});
</script>

list.vue

<template>
    <ul className="todo-main">
         <Listitem v-for="(todos,index) in todos" :key="todos.id" :todos='todos'></Listitem>
    </ul>
</template>
<style scoped>
@import"./list.css";
</style>
<script lang="ts">
import Listitem from "./listitem/listitem.vue"
import { defineComponent } from 'vue'
export default defineComponent({
    components:{
        Listitem
    },
    props:{
        todos:Object
    }
    ,
    setup() {
        
    },
})
</script>

listitem.vue

<template>
 
    <li  class="itli" >
      <label>
        <input type="checkbox" v-model="todos.isture" />
        <span>{{todos.title}}</span>
      </label>
      <button
        class="btn btn-danger"
             >删除</button>
    </li>
 
</template>
<style scoped>
@import "./listitem.css";
</style>
<script lang="ts">
import { defineComponent } from "vue";
//导入接口类型
import {todo} from "../../../type/todo"
export default defineComponent({
  setup() {},
  props:{
//定义todos的类型是自己定义的todo接口
    todos:Object as ()=>todo
  }
});
</script>

footer.vue

<template>
    <div class="todo-footer">
        <label>
          <input type="checkbox"     />
        </label>
        <span  >
          <span >已完 </span> / 全部 
        </span>
        <button class="btn btn-danger"  >清除已完成任务</button>
      </div>
</template>
<style scoped>
/* @import"./footer.css"; */
</style>
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
    setup() {
        
    },
})
</script>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue-cli3+typescript新建一个项目的思路分析

    vue-cli3+typescript新建一个项目的思路分析

    这篇文章主要介绍了vue-cli3+typescript新建一个项目的思路,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • vue this.$router.go(-1);返回时如何带参数

    vue this.$router.go(-1);返回时如何带参数

    这篇文章主要介绍了vue this.$router.go(-1);返回时如何带参数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Vue中子组件不能修改父组件传来的Prop值的原因分析

    Vue中子组件不能修改父组件传来的Prop值的原因分析

    在Vue中,父子组件之间通过Prop和Event实现了数据的双向绑定,但是,Vue设计者为什么不允许子组件修改父组件传递的Prop呢,本文就来带大家探究为什么子组件不能修改Prop,需要的朋友可以参考下
    2023-06-06
  • windows下vue.js开发环境搭建教程

    windows下vue.js开发环境搭建教程

    这篇文章主要为大家详细介绍了windows下vue.js开发环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Vue使用正则校验文本框为正整数

    Vue使用正则校验文本框为正整数

    这篇文章主要介绍了Vue使用正则校验文本框为正整数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue 首页加载,速度优化及解决首页白屏的问题

    vue 首页加载,速度优化及解决首页白屏的问题

    这篇文章主要介绍了vue 首页加载,速度优化及解决首页白屏的问题,具有很好的参考价值,希望对大家有所帮助。
    2022-10-10
  • vue3中 provide 和 inject 用法小结

    vue3中 provide 和 inject 用法小结

    父子组件传递数据时,使用的是props和emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传很多次,会很麻烦,这篇文章主要介绍了vue3中 provide 和 inject 用法,需要的朋友可以参考下
    2023-11-11
  • vue3.2新增指令v-memo的基本使用教程

    vue3.2新增指令v-memo的基本使用教程

    ue3.2新增了一个指令v-memo,引入这个指令的目的是帮助大家更好的为我们的应用做性能优化,下面这篇文章主要给大家介绍了关于vue3.2新增指令v-memo基本使用的相关资料,需要的朋友可以参考下
    2022-09-09
  • vue 授权获取微信openId操作

    vue 授权获取微信openId操作

    这篇文章主要介绍了vue 授权获取微信openId操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 基于vue中keep-alive缓存问题的解决方法

    基于vue中keep-alive缓存问题的解决方法

    今天小编就为大家分享一篇基于vue中keep-alive缓存问题的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09

最新评论