ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

vue3,NO_1

2021-06-14 23:01:47  阅读:129  来源: 互联网

标签:vue NO list item vue3 router data id


vue3开始

使用vue-cli3创建vue3项目

  • 执行命令 vue create 项目名称

安装vue-router

  • npm i vue-router

  • 在src文件创建router=》index.js文件;

    • // src/router/index.js
      import { createRouter, createWebHashHistory } from 'vue-router'
      import Home from '../views/Home.vue'
      import MyPageOne from '../views/MyPageOne.vue'
      
      // createRouter 创建路由实例
      const router = createRouter({
        history: createWebHashHistory(), // hash模式:createWebHashHistory,history模式:createWebHistory
        routes: [
          {
            path: '/',
            component: Home
          },
          {
              path: '/mypage',
              component: MyPageOne
            }
        ]
      })
      
      // 抛出路由实例, 在 main.js 中引用
      export default router
      
  • main.js中引入

    • import { createApp } from 'vue'
      import App from './App.vue'
      import router from './router'
      
      const app = createApp(App) // 创建实例
      
      app.use(router)
      
      app.mount('#app')
      
  • App.js中

    • <template>
      <!-- 和 vue-router3 一样,展示路由的组件的地方 -->
        <router-view />
      </template>
      
      <script>
      
      export default {
        name: 'App'
      }
      </script>
      

简易todolist

<template>
  <div>
      <div>
        <input v-model="inputValue" />
        <button @click="addList('ddd')">添加</button>
      </div>
      <div>
          <button @click="changeType('全部')">全部</button>
          <button @click="changeType('已完成')">已完成</button>
          <button @click="changeType('未完成')">未完成</button>
      </div>
      <div>
        <div v-for="item in list" :key="item.id">
            <template v-if="type === '全部'">
                <label @click="changeIs(item.id)">{{ item.title }}</label>
                <button @click="delectList(item.id)">删除</button>
            </template>
             <template v-if="type === '已完成' && item.isBool">
                 <label @click="changeIs(item.id)">{{ item.title }}</label>
                <button @click="delectList(item.id)">删除</button>
             </template>
             <template v-if="type === '未完成' && !item.isBool">
                 <label @click="changeIs(item.id)">{{ item.title }}</label>
                <button @click="delectList(item.id)">删除</button>
             </template>
        </div>
      </div>
  </div>
</template>

<script>
import { reactive, toRefs, onBeforeMount, onMounted } from 'vue'
export default {
  name: '',
  setup() {
    console.log('1-开始创建组件-setup')
    const data = reactive({
        list:[
            {id:1,title:'oooo',isBool:true},
            {id:2,title:'xxxx',isBool:true},
        ],
        number:3,
        inputValue:'信息',
        type:'全部',
        addList: () => {
           data.list.push({id:data.number++,title:data.inputValue,isBool:true})
        },
        delectList: id =>{
            data.list =data.list.filter(item => item.id !== id)
        },
        changeIs: id =>{
            data.list.forEach(item =>{
                if(item.id === id){
                    item.isBool = !item.isBool;
                }
            })
            data.list = [...data.list]
        },
        changeType: type =>{
            data.type = type;
        }
    })
    onBeforeMount(() => {
      console.log('2.组件挂载页面之前执行----onBeforeMount')
    })
    onMounted(() => {
      console.log('3.-组件挂载到页面之后执行-------onMounted')
    })
    return {
      ...toRefs(data),
    }
  },
}

</script>

标签:vue,NO,list,item,vue3,router,data,id
来源: https://www.cnblogs.com/lixingqian/p/14883701.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有