Vue3——02路由跳转以及数据渲染的新写法

简介: 路由跳转以及数据渲染的新写法

一、路由跳转的写法

useRouter

官网解释:

50081d8cc0624baabc5fa4a8599e0dde.png

使用useRouter对路由进行跳转

HomeView.vue页面

<p @click="goAbout">点我</p>
import { useRouter } from "vue-router";
export default {
  name: "HomeView",
  setup() {
    let router = useRouter();
    function goAbout() {
      router.push("/about");
    }
    return {
      goAbout,
    };
  },
};

在setup中使用函数后必须用return调用一下,否则不会成功

752389779e5a450e8855f904a56aad9b.png

给标签设置一个点击事件即可从/路径路由跳转到/about页面

二、引入element-ui支持Vue3的组件库

Element-Plus

f4b8b1847a854d81b1cf9b1c70044e15.png

d19c2347ce854cccb172fbbf022576c3.png


安装依赖

npm i element-ui -S

yarn安装

yarn add element-plus

安装完成后用main.js引入全局

import axios from './plugins/axios.js'
import { createApp} from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementPlus from 'element-plus' //element-plus
import 'element-plus/dist/index.css'   // element - plus样式
createApp(App).use(store).use(router).use(axios).use(ElementPlus).mount('#app')

回到HomeView页面

<el-button type="primary" @click="goAbout">点我</el-button>

渲染成功的效果

d96540c1f4a5455da18d53eb5c95434a.png

三、Vue3中的Composition API

理解:Vue3.0中一个新的配置项,值为一个函数。

setup是所有Composition API(组合API)“ 表演的舞台 ”。

组件中所用到的:数据、方法等等,均要配置在setup中。

setup函数的两种返回值:

若返回一个对象,则对象中的属性、方法, 在模板中均可以直接使用。

Composition API 的优势

更加优雅的组织我们的代码,函数。让相关功能的代码更加有序的组织在一起。说得简单些就是用起来更方便更简单

在传统的Vue2中 的Options API 存在的问题

使用传统Options API(配置式API)中,新增或者修改一个需求,就需要分别在data,methods,computed里修改 。

接下来看个例子

<template>
  <div class="home">
    <el-button type="primary" @click="sayInfo">点我</el-button>
  </div>
</template>
<script>
export default {
  name: "HomeView",
  data() {
    return {
      name: "nanChen",
    };
  },
  methods: {
    sayInfo() {
      alert(`Hi!我叫${this.name}`);
    },
  },
  mounted() {
    this.Hello();
  },
  setup() {
    let height = 180;
    let age = 23;
    let sex = "男";
    function Hello() {
      alert(`Hello${height},What's your name?`);
    }
    return {
      age,
      sex,
      Hello,
    };
  },
};
</script>

1515d93a5a9d483a83554d4b7211ae15.png

295a06369e3347ed95c178850e409573.png

这里使用vue2和vue3混合写法也可以运行成功,但尽量不要与Vue2.x配置混用

Vue2.x配置(data、methos、computed...)中可以访问到setup中的属性、方法。

但在setup中不能访问到Vue2.x配置(data、methos、computed...)。

如果有重名, setup优先。

说白了就是vue2中的data,methods啊什么的会和Vue3中的Composition冲突,但会优先执行setup

四、ref | reactive

ref | reactive 都是vue3声明响应式数据的函数

如果想要修改变量中的数据,那么就需要用到ref,修改对象中的变量就用reactive

直接更改名称,它只会更改了控制台中的变量,并不会更改标签中的内容

这时候需要用到ref 以及对应的value

setup() {
    let esay = ref('身高')  // 基本数据类型用ref写变量
    function seeClick(){
      esay.value = 180  // 基本数据类型可以通过变量名.value进行接收并可对其修改
    }
    return {
      esay,  // 简单数据类型
      seeClick
    };
  },
<template>
  <div class="home">
    <div>
      <el-button type="primary" @click="seeClick">点击显示数据</el-button>
    </div>
    <div style="margin-top:20px">
      <el-button type="info">{{obj.name}}</el-button>
      <el-button type="info">{{obj.age}}</el-button>
      <el-button type="info">{{obj.sex}}</el-button>
      <el-button type="info">{{esay}}</el-button>
    </div>
  </div>
</template>
<script>
import {reactive, ref} from 'vue';
export default {
  name: "HomeView",
  setup() {
    let esay = ref('身高')  // 基本数据类型用ref写变量
    let obj = reactive({
      name: "昵称",
      age: "年龄",
      sex: '性别',
    });
    function seeClick(){
      esay.value = 180  // 基本数据类型可以通过变量名.value进行接收并可对其修改
      /* 复杂类型对象的方式可以通过reactive进行更改 */
      obj.name = 'NanChen'
      obj.age = 23
      obj.sex = '男'
    }
    return {
      esay,  // 简单数据类型
      obj,  // 对象数据类型
      seeClick
    };
  },
};
</script>
<style scoped>
</style>

c6cfcf31a21c42b089783b787acece54.png

affb9658bc8c459da414872c1ad3d3db.png

当然修改更复杂的数据类型也需要用reactive进行修改

例:

<template>
  <div class="home">
    <div>
      <el-button type="primary" @click="seeClick">点击显示数据</el-button>
    </div>
    <div style="margin-top:20px">
      <el-button type="info">{{obj.jobs.a.b.c.d}}</el-button>
    </div>
  </div>
</template>
<script>
import { reactive } from 'vue';
export default {
  name: "HomeView",
  setup() {
    let obj = reactive({
      name:'NC',
      arr:['HTML','CSS',"JS"],
      jobs:{
        type:'web',
        salary: '20k',
        a:{
          b:{
            c:{
              d:'牛'
            }
          }
        }
      }
    })
    function seeClick(){
      obj.jobs.a.b.c.d = 'cow!'
    }
    return {
      obj,
      seeClick
    }
  },
};
</script>

bb7c2c81d2cc42d5afe16d1d23e8963e.png

086033545f5847168576f90e735e87c2.png

也可以对数据进行添加或删除

<template>
    <h1>信息</h1>
    <h2>昵称:{{obj.name}}</h2>
    <h2>年龄:{{obj.age}}</h2>
    <h2>性别:{{obj.sex}}</h2>
    <h2>职业:{{obj.jobs.type}}</h2>
    <h2 v-if="obj.arr" style="color:#409EFF">天天干啥:{{obj.arr}}</h2>
    <h2>薪资:{{obj.jobs.salary}}</h2>
    <h3 v-if="obj.jobs.a.b.c.d" style="color:#67C23A">评价:{{obj.jobs.a.b.c.d}}</h3>
    <el-button type="primary" plain @click="addArr">点击显示NanChen天天干啥</el-button>
    <el-button type="danger" plain @click="deleteD">删除评价</el-button>
</template>
<script>
import { reactive } from 'vue';
export default {
  name: "HomeView",
  setup() {
    let obj = reactive({
      name:'NC',
      age:40,
      sex:'man',
      jobs:{
        type:'web',
        salary: '20k',
        a:{
          b:{
            c:{
              d:'Very cow!'
            }
          }
        }
      }
    })
    function addArr(){
      obj.arr =['敲代码','写代码',"看代码"]
    }
    function deleteD(){
      delete obj.jobs.a.b.c.d
    }
    return {
      obj,
      addArr,
      deleteD
    }
  },
};
</script>

效果如下:

fa4c9b8fd50148e3944ff1af9ba044e4.gif

相关文章
|
10天前
|
敏捷开发 人工智能 JavaScript
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
Figma-Low-Code 是一个开源项目,能够直接将 Figma 设计转换为 Vue.js 应用程序,减少设计师与开发者之间的交接时间,支持低代码渲染和数据绑定。
37 3
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
|
2月前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
156 64
|
2月前
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
2月前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
69 1
|
2月前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
72 1
|
2月前
|
监控 JavaScript 前端开发
Vue 异步渲染
【10月更文挑战第23天】Vue 异步渲染是提高应用性能和用户体验的重要手段。通过理解异步渲染的原理和优化策略,我们可以更好地利用 Vue 的优势,开发出高效、流畅的前端应用。同时,在实际开发中,要注意数据一致性、性能监控和调试等问题,确保应用的稳定性和可靠性。
|
3月前
|
API
vue3知识点:响应式数据的判断
vue3知识点:响应式数据的判断
35 3
|
3月前
|
资源调度 JavaScript 前端开发
路由管理:Vue Router的使用和配置技巧
【10月更文挑战第21天】路由管理:Vue Router的使用和配置技巧
60 3
|
2月前
|
JavaScript UED
"Vue实战技巧大揭秘:一招解决路由跳转页面不回顶部难题,让你的单页面应用用户体验飙升!"
【10月更文挑战第23天】在Vue单页面应用中,点击路由跳转时,默认情况下页面不会自动滚动到顶部,这可能影响用户体验。本文通过一个新闻网站的案例,介绍了如何使用Vue-router的全局前置守卫和`scrollBehavior`方法,实现路由跳转时页面自动滚动到顶部的功能,提升用户浏览体验。
135 0
|
14天前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
81 1