最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

2種方法創(chuàng)建vue登錄組件,實現(xiàn)界面跳轉(zhuǎn)和傳參,組件插槽,router-link【詩書畫唱】

2021-05-13 19:05 作者:詩書畫唱  | 我要投稿

前言:本期寫了很長的時間,很詳細(xì)的功能實現(xiàn),很適合新手入門!干貨滿滿!希望更多人可以多多三連!



目錄:


例子3:創(chuàng)建一個登錄組件,當(dāng)點擊登錄按鈕以后,跳轉(zhuǎn)到一個歡迎頁面(要自己寫),

這個頁面上面顯示出登錄頁面中傳過來的賬號和密碼的值



lint

template

vue文件中template是模板的意思,寫html的代碼。<script></script>中寫export?default,methods,點擊事件綁定的函數(shù)等js的代碼。下面是綁定點擊事件等的方法,

?組件跳轉(zhuǎn)(或說是組件切換)的方式,界面跳轉(zhuǎn)和傳參等等的2種方法(我個人喜歡用第2種方法)。



router路由配置中和點擊事件中,界面跳轉(zhuǎn)中關(guān)鍵的是name屬性的設(shè)置,比如name:?'Reg'



關(guān)于組件插槽,用來匹配插入路由配置的頁面(個人理解:也就是別的組件不管怎么切換,都是會出現(xiàn)這個部分的代碼的)

App.vue(基本都是用源碼的,不用很多改動)

main.js(基本都是用源碼的,不用很多改動)





科普:

插槽實質(zhì)是對子組件的擴(kuò)展,通過<slot>插槽向組件內(nèi)部指定位置傳遞內(nèi)容。

slot(插槽)是Vue中的特性,既然提到了組件,那么小程序中就也有插槽的特性。很幸運地,小程序中,插槽和Vue中的插槽用法大致相同。


assets



vue項目中,重復(fù)點擊路由報錯,即為Uncaught (in promise) Error: Avoided redundant navigation to current location:的解決方法




My_login_success.vue

My_login.vue

index.js


App.vue和main.js等等基本每個vue項目中都要用,并且沒有什么大改動,請參看前面例子的代碼



在代碼界面上鼠標(biāo)右鍵可以點格式化文檔,就可以自動整理代碼等等,個人認(rèn)為比HBuilder中的整理代碼的好一些



例子4:上面的題目使用兩種頁面跳轉(zhuǎn)方式實現(xiàn)。

My_login2.vue

index.js

vue-router 中 router-link 與 a 標(biāo)簽的區(qū)別


<router-link> 組件支持用戶在具有路由功能的應(yīng)用中 (點擊) 導(dǎo)航。 通過 to 屬性指定目標(biāo)地址,默認(rèn)渲染成帶有正確鏈接的 <a> 標(biāo)簽,可以通過配置 tag 屬性生成別的標(biāo)簽.。

通過 router-link 進(jìn)行跳轉(zhuǎn)不會跳轉(zhuǎn)到新的頁面,也不會重新渲染,它會選擇路由所指的組件進(jìn)行渲染,避免了重復(fù)渲染的“無用功”。



例子3:創(chuàng)建一個登錄組件,當(dāng)點擊登錄按鈕以后,跳轉(zhuǎn)到一個歡迎頁面(要自己寫),

這個頁面上面顯示出登錄頁面中傳過來的賬號和密碼的值



lint

音譯:令可

template


音譯:探 破兒類特


vue文件中template是模板的意思,寫html的代碼。<script></script>中寫export?default,methods,點擊事件綁定的函數(shù)等js的代碼。下面是綁定點擊事件等的方法,

?組件跳轉(zhuǎn)(或說是切換)的方式,界面跳轉(zhuǎn)和傳參等等的2種方法(我個人喜歡用第2種方法)。





router路由配置中和點擊事件中,界面跳轉(zhuǎn)中關(guān)鍵的是name屬性的設(shè)置,比如name:?'Reg'


關(guān)于組件插槽,用來匹配插入路由配置的頁面(個人理解:也就是別的組件不管怎么切換,都是會出現(xiàn)這個部分的代碼的)


App.vue(基本都是用源碼的,不用很多改動)


<template>

??<div?id="app">

????<img?src="./assets/logo.png">

????<!--?組件插槽,用來匹配插入路由配置的頁面?-->

????<router-view/>

??</div>

</template>


<script>

export?default?{

??name:?'App'

}

</script>


<style>

#app?{

??font-family:?'Avenir',?Helvetica,?Arial,?sans-serif;

??-webkit-font-smoothing:?antialiased;

??-moz-osx-font-smoothing:?grayscale;

??text-align:?center;

??color:?#2c3e50;

??margin-top:?60px;

}

</style>



main.js(基本都是用源碼的,不用很多改動)

//?The?Vue?build?version?to?load?with?the?`import`?command

//?(runtime-only?or?standalone)?has?been?set?in?webpack.base.conf?with?an?alias.

import?Vue?from?'vue'

import?App?from?'./App'

import?router?from?'./router'


Vue.config.productionTip?=?false


/*?eslint-disable?no-new?*/

new?Vue({

??el:?'#app',

??router,

??components:?{?App?},

??template:?'<App/>'

})








科普:

插槽實質(zhì)是對子組件的擴(kuò)展,通過<slot>插槽向組件內(nèi)部指定位置傳遞內(nèi)容。

slot(插槽)是Vue中的特性,既然提到了組件,那么小程序中就也有插槽的特性。很幸運地,小程序中,插槽和Vue中的插槽用法大致相同。


音譯:死樓特
例如在上面的例子中,我們需要使用插槽來自定義右側(cè)的圖標(biāo)或文字。

assets



音譯:愛賽次


vue項目中,重復(fù)點擊路由報錯,即為Uncaught (in promise) Error: Avoided redundant navigation to current location:的解決方法



//解決重復(fù)點擊路由,界面跳轉(zhuǎn)等時報錯的代碼?START

const?originalPush?=?Router.prototype.push

Router.prototype.push?=?function?push?(location)?{

??return?originalPush.call(this,?location).catch(err?=>?err)

}


//解決重復(fù)點擊路由,界面跳轉(zhuǎn)等時報錯的代碼?END



My_login_success.vue


<template>

????<div>

????????<h1>我的登錄成功頁面</h1>?

?????????<h2>傳過來的登錄狀態(tài)是:{{this.$route.params.state}}</h2>?

????????<h2>傳過來的賬號是:{{this.$route.params.act}}</h2>

??????

????????<h2>傳過來的密碼是:{{this.$route.params.pwd}}</h2>

??????

????</div>

</template>




My_login.vue



<template>

??<div>

????<h1>我的登錄頁面</h1>

<!--?界面跳轉(zhuǎn)方法1:?-->

????<input?type="text"?v-model="username"?placeholder="請輸入賬號"?/>

????<input?type="password"?v-model="password"?placeholder="請輸入密碼"?/>

????<input?type="button"?value="登錄"?@click="f()"?/>


????<!--?<h2>{{?this.$route.params.state?}}</h2>?-->

??</div>

</template>

<script>

export?default?{

??/*定義username和password等變量的部分??START(不寫就會報

????Property?or?method?"username"?is?not?defined

????之類變量未定義的錯誤)*/

??data()?{

????return?{

??????username:?"",

??????password:?"",

??????state:?"",

????};

??},

??/*定義username和password等變量的部分??END*/


??methods:?{

????f:?function?()?{

??????console.log(this.username);

??????console.log(this.password);

??????console.log(this.username?==?"詩書畫唱");

??????console.log(this.password?==?"666666");

??????if?(this.username?==?"詩書畫唱"?&&?this.password?==?"666666")?{

????????this.$router.push({

??????????name:?"My_login_success",

??????????params:?{

????????????act:?this.username,

????????????pwd:?this.password,

????????????state:?"登錄成功!",

??????????},

????????});

??????}?else?if?(this.username?!=?"詩書畫唱"?||?this.password?!=?"666666")?{

????????alert("登錄失敗,請輸入正確的用戶名和密碼!");

????????//?????????this.$router.push({

????????//???????????name:?"My_login",

????????//???????????params:?{


????????//??state:?"登錄失敗,請輸入正確的用戶名和密碼!"

????????//???????????},

????????//?????????});

??????}

????},

??},

};

</script>



在代碼界面上鼠標(biāo)右鍵可以點格式化文檔,就可以自動整理代碼等等,個人認(rèn)為比HBuilder中的整理代碼的好一些





index.js



import?Vue?from?'vue'

import?Router?from?'vue-router'

import?HelloWorld?from?'@/components/HelloWorld'

//自己加入的必須加載和要使用組件的代碼?START


import?Login?from?'@/components/Login'//——>導(dǎo)入Login.vue這個文件

import?Reg?from?'@/components/Reg'//——>導(dǎo)入Reg.vue這個文件


import?My_login?from?'@/components/My_login'

import?My_login_success?from?'@/components/My_login_success'

//自己加入的必須加載和要使用組件的代碼?END


Vue.use(Router)


export?default?new?Router({

??routes:?[

????{

??????path:?'/',

??????name:?'HelloWorld',

??????component:?HelloWorld

????}

????//自己加的代碼(設(shè)置跳轉(zhuǎn)路徑和對應(yīng)路徑中會使用的組件)?START

???/*?,

????{//設(shè)置訪問跳轉(zhuǎn)路徑http://localhost:8080/#/lg時會調(diào)用Login.vue組件:

??????path:?'/lg',

??????name:?'Login',//路由跳轉(zhuǎn)時使用

??????component:?Login

????},

????{//設(shè)置訪問跳轉(zhuǎn)路徑http://localhost:8080/#/reg時會調(diào)用reg.vue組件:

??????path:?'/reg',

??????name:?'Reg',//路由跳轉(zhuǎn)時使用

??????component:?Reg

????}*/

????,

????{//設(shè)置訪問跳轉(zhuǎn)路徑http://localhost:8080/#/My_login時會調(diào)用My_login.vue組件:

??????path:?'/My_login',

??????name:?'My_login',//路由跳轉(zhuǎn)時使用

??????component:?My_login//記得寫加載要使用的這個組件的代碼

????}

????,

????{

//設(shè)置訪問跳轉(zhuǎn)路徑http://localhost:8080/#/My_login_success時會調(diào)用My_login_success.vue組件:

??????path:?'/My_login_success',

??????name:?'My_login_success',//路由跳轉(zhuǎn)時使用

??????component:?My_login_success//記得寫加載要使用的這個組件的代碼

????}

????//自己加的代碼?END

??]

})

//解決重復(fù)點擊路由,界面跳轉(zhuǎn)等時報錯的代碼?START

const?originalPush?=?Router.prototype.push

Router.prototype.push?=?function?push?(location)?{

??return?originalPush.call(this,?location).catch(err?=>?err)

}


//解決重復(fù)點擊路由,界面跳轉(zhuǎn)等時報錯的代碼?END

運行

http://localhost:8080/#/My_login




App.vue和main.js等等基本每個vue項目中都要用,并且沒有什么大改動,請參看前面例子的代碼



例子4:上面的題目使用兩種頁面跳轉(zhuǎn)方式實現(xiàn)。


方法1(見例子3):

方法2(這里暫時簡寫業(yè)務(wù)邏輯等等):




vue-router 中 router-link 與 a 標(biāo)簽的區(qū)別

<router-link> 組件支持用戶在具有路由功能的應(yīng)用中 (點擊) 導(dǎo)航。 通過 to 屬性指定目標(biāo)地址,默認(rèn)渲染成帶有正確鏈接的 <a> 標(biāo)簽,可以通過配置 tag 屬性生成別的標(biāo)簽.。

通過 router-link 進(jìn)行跳轉(zhuǎn)不會跳轉(zhuǎn)到新的頁面,也不會重新渲染,它會選擇路由所指的組件進(jìn)行渲染,避免了重復(fù)渲染的“無用功”。


My_login2.vue


<template>

??<div>

????<h1>我的登錄頁面</h1>

<!--?界面跳轉(zhuǎn)方法2:?-->

????<!--?<input?type="text"?v-model="username"?placeholder="請輸入賬號"?/>

????<input?type="password"?v-model="password"?placeholder="請輸入密碼"?/>?-->

????<!--?<input?type="button"?value="登錄"?@click="f()"?/>?-->

????<button>

??<router-link?:to="{name:'My_login_success',

??params:{act:'詩書畫唱',?pwd:?'666666',state:?'登錄成功!',}}">

??登錄</router-link>

??</button>

????<!--?<h2>{{?this.$route.params.state?}}</h2>?-->

??</div>

</template>

<style?>

?a{

????text-decoration:?none;

????color:blue;

??}

?

</style>

//?<script>

//?export?default?{

//???/*定義username和password等變量的部分??START(不寫就會報

//?????Property?or?method?"username"?is?not?defined

//?????之類變量未定義的錯誤)*/

//???data()?{

//?????return?{

//???????username:?"",

//???????password:?"",

//???????state:?"",

//?????};

//???},

//???/*定義username和password等變量的部分??END*/


//???methods:?{

//?????f:?function?()?{

//???????console.log(this.username);

//???????console.log(this.password);

//???????console.log(this.username?==?"詩書畫唱");

//???????console.log(this.password?==?"666666");

//???????if?(this.username?==?"詩書畫唱"?&&?this.password?==?"666666")?{

//?????????this.$router.push({

//???????????name:?"My_login_success",

//???????????params:?{

//?????????????act:?this.username,

//?????????????pwd:?this.password,

//?????????????state:?"登錄成功!",

//???????????},

//?????????});

//???????}?else?if?(this.username?!=?"詩書畫唱"?||?this.password?!=?"666666")?{

//?????????alert("登錄失敗,請輸入正確的用戶名和密碼!");

?????

//???????}

//?????},

//???},

//?};

</script>



index.js



運行



http://localhost:8080/#/My_login2



2種方法創(chuàng)建vue登錄組件,實現(xiàn)界面跳轉(zhuǎn)和傳參,組件插槽,router-link【詩書畫唱】的評論 (共 條)

分享到微博請遵守國家法律
崇明县| 哈巴河县| 民和| 九龙县| 额济纳旗| 广平县| 勐海县| 平凉市| 普兰店市| 乳源| 蓝田县| 高陵县| 青海省| 焉耆| 托克逊县| 仁化县| 新邵县| 湟源县| 平阴县| 嵊泗县| 正宁县| 澜沧| 高清| 辉南县| 滦南县| 吐鲁番市| 北海市| 罗山县| 华亭县| 吉水县| 安乡县| 淮阳县| 洪泽县| 蕉岭县| 察隅县| 怀化市| 互助| 湘西| 贵德县| 望都县| 同德县|