首頁 > 常見問題 > 主體

vue組件傳值有什麼方式

百草
發布: 2023-07-18 09:35:48
原創
1147 人瀏覽過

元件傳值方式:1、透過路由進行傳值;2、透過在父元件中讓子元件標籤綁定父元件的數據,子元件的props接收父元件穿過來的值,子元件的props接收父元件傳的值;3、子元件向父元件傳值,用“this.$emit”來遍歷getData事件;4、非父元件之間傳值,一個綁定“this.on”事件,一個觸發“this.$ emit”事件,或者在本地存儲中添加公共數據,可以在兩個頁面中獲取

vue組件傳值有什麼方式

##vue元件傳值的方式:

1、路由傳參

步驟:

①定義路由時加上參數props: true,定義路由路徑時要留有參數佔位符: name‘用法:to="'路徑/'+value"’

#②在跳到的頁面加上參數props:['name']

#③在跳到的頁面就取得到了name‘用法: js中直接this. name;html中直接插值{{ name}}’

2、父元件向子元件傳值

父元件傳送值向子元件就是透過在父元件中讓子元件標籤綁定父元件的數據,子元件的props接收父元件穿過來的值即可


步驟:

①父元件內設定要傳的資料『data(){ parentid: value}’

②在父元件中所引用的子元件上綁定一個自訂屬性並把資料綁定在自訂屬性上‘ mybtn>’

③在子元件中加入參數props:['childid'],即可

程式碼:

<div id="app"><br/>    <mybtn :childid=&#39;parentid&#39; title="我是标题"></mybtn><br/></div><br/><script><br/>    new Vue({<br/>        el:"app",<br/>        data:{<br/>            parentid:"88888"<br/>        },<br/>        components:{<br/>            "mybtn" : {<br/>                props: [&#39;childid&#39;,&#39;title&#39;],<br/>                template: &#39;<button>我是{{childid}}号按钮{{title}}</button>&#39;<br/>            }<br/>        }<br/>    })<br/></script><br/>
登入後複製

結果展示:

vue組件傳值有什麼方式

#3、子元件傳值給父元件

子傳父的實作方式就是用了this.e m i t 來遍歷getData 事件,先用按鈕來觸發setData事件,在setData中用this.emit 來遍歷getData 事件,最後回傳this.msg

步驟:

①由於父元件需要參數,所以在父元件中的標籤上定義自訂事件,在事件內部取得參數;‘@myEvent=" callback"在callback函數中接收參數’


②在子元件中觸發自訂事件,並傳參。 『this.$emit('父元件中的自訂事件',參數)』

程式碼:

<template><br/>  <div><br/>      <mybtn :  style="max-width:90%" @changeColorEvent="getColor" :parentid="childid" title="我是标题"></mybtn><br/>  </div><br/> <br/></template><br/><script><br/> <br/>  export default {<br/>    name : &#39;test&#39;,<br/>    data () {<br/>      return {<br/>        childid:"666",<br/>        acolor:&#39;blue&#39;,<br/>        bcolor:&#39;red&#39;<br/>      }<br/>    },<br/>    methods:{<br/>      getColor(colors){<br/>        //父组件就可以拿到子组件传过来的colors<br/>        console.log(colors)<br/>        this.acolor = "white";<br/>        this.bcolor = colors;<br/>      },<br/>      //接收多个参数<br/>      /*getColor(colors1,colors2){<br/>        console.log(colors1,colors2)<br/>        this.acolor = colors2;<br/>        this.bcolor = colors1;<br/>      }*/<br/>    },<br/>    components: {<br/>      &#39;mybtn&#39; : {<br/>        props : [&#39;parentid&#39;,&#39;title&#39;],<br/>        template : `<br/>          <div class="box"><br/>            <p>我最初是一张白纸</p><br/>            <button @click="changeColor">我是{{parentid}}号按钮{{title}}</button><br/>          </div><br/>        `,<br/>        methods: {<br/>          changeColor(){<br/>          //这个方法是触发父组件中的事件,第一个参数是触发的事件名称。第二个参数及以后是向changeColorEvent传的参数<br/>           this.$emit(&#39;changeColorEvent&#39;,"orange")<br/>           //发送多个参数可以直接跟在后面<br/>           //this.$emit(&#39;changeColorEvent&#39;,"orange","white")<br/>          }<br/>        }<br/>      }<br/>    }<br/>  }<br/></script><br/><style scoped><br/> <br/></style><br/>
登入後複製

vue組件傳值有什麼方式

4、非父元件之間傳值

步驟:

(1)方法一、

①建立一個公共的通訊元件(Vue),需要傳值的元件裡引入該通訊元件

②在一個中綁定一個事件this.on('eventname', this. id)

③在另一個元件中觸發事件this.$ emit('eventname',( options )=>{})

(2)方法二、

在本地儲存中新增公共數據,可以在兩個頁面中獲取,更改

以上是vue組件傳值有什麼方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板