<strike id="g3zqm"></strike>

      <cite id="g3zqm"></cite>

        <tr id="g3zqm"><center id="g3zqm"></center></tr>
        <pre id="g3zqm"><sup id="g3zqm"></sup></pre>
        <li id="g3zqm"></li>
      1. 少妇高潮激情一区二区三,免费av深夜在线观看,亚洲狼人久久伊人久久伊,久久精品人人做人人爽电影蜜月,黄色特级片一区二区三区,欧美日韩在线亚洲二区综二,极品少妇无套内射视频,日本极品少妇videossexhd

        vue傳值方式總結(jié) (十二種方法)

        2021-4-25    前端達(dá)人

        一.父?jìng)髯觽鬟f

        (1)在父組件的子組件標(biāo)簽上綁定一個(gè)屬性,掛載要傳輸?shù)淖兞?br style="box-sizing:border-box;outline:0px;user-select:text !important;overflow-wrap:break-word;" /> (2)在子組件中通過(guò)props來(lái)接受數(shù)據(jù),props可以是數(shù)組也可以是對(duì)象,接受的數(shù)據(jù)可以直接使用 props: [“屬性 名”] props:{屬性名:數(shù)據(jù)類(lèi)型}
        代碼示例:

        //父組件
        <template>
          <div>
            <i>父組件</i>
            <!--頁(yè)面使用-->
            <son :data='name'></son> 
          </div>
        </template>
        
        <script>
        import son from "./son.vue";//導(dǎo)入父組件
        export default {
          components: { son },//注冊(cè)組件
          name: "父組件",
          data() {
            return {
              name: "Frazier", //父組件定義變量
            };
          },
        };
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        //子組件
        <template>
          <div>{{data}}</div>
        </template>
        
        <script>
        export default {
        components: { },
          name: '子組件',
          props:["data"],
        };
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12

        二.子傳父?jìng)鬟f

        (1)在父組件的子組件標(biāo)簽上自定義一個(gè)事件,然后調(diào)用需要的方法
        (2)在子組件的方法中通過(guò) this.$emit(“事件”)來(lái)觸發(fā)在父組件中定義的事件,數(shù)據(jù)是以參數(shù)的形式進(jìn)行傳遞的
        代碼示例:

        //父組件
        <template>
          <div>
            <i>父組件</i>
            <!--頁(yè)面使用-->
            <son @lcclick="lcclick"></son>//自定義一個(gè)事件
          </div>
        </template>
        
        <script>
        import son from "./son.vue"; //導(dǎo)入父組件
        export default {
          components: { son }, //注冊(cè)組件
          name: "父組件",
          data() {
            return {};
          },
          methods: {
            lcclick(){
              alert('子傳父')
            }
          },
        };
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        //子組件
        <template>
          <div>
            <button @click="lcalter">點(diǎn)我</button>
          </div>
        </template>
        
        <script>
        export default {
        components: { },
          name: '子組件',
          methods: {
            lcalter(){
              this.$emit('lcclick')//通過(guò)emit來(lái)觸發(fā)事件
            }
          },
        };
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18

        三.兄弟組件通信(bus總線)

        (1)在src中新建一個(gè)Bus.js的文件,然后導(dǎo)出一個(gè)空的vue實(shí)例
        (2)在傳輸數(shù)據(jù)的一方引入Bus.js 然后通過(guò)Bus.e m i t ( “ 事 件 名 ” , " 參 數(shù) " ) 來(lái) 來(lái) 派 發(fā) 事 件 , 數(shù) 據(jù) 是 以 emit(“事件名”,"參數(shù)")來(lái)來(lái)派發(fā)事件,數(shù)據(jù)是以emit(,"數(shù)")來(lái)來(lái)發(fā)數(shù)據(jù)emit()的參 數(shù)形式來(lái)傳遞
        (3)在接受的數(shù)據(jù)的一方 引入 Bus.js 然后通過(guò) Bus.$on(“事件名”,(data)=>{data是接受的數(shù)據(jù)})
        圖片示例:
        在這里插入圖片描述
        在這里插入圖片描述
        在這里插入圖片描述

        四.ref/refs(父子組件通信)

        (1)ref 如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子組件上,引用就指向組件實(shí)例,
        (2)可以通過(guò)實(shí)例直接調(diào)用組件的方法或訪問(wèn)數(shù)據(jù)。也算是子組件向父組件傳值的一種
        代碼示例:

        //父組件
        <template>
          <div>
            <button @click="sayHello">sayHello</button>
            <child ref="childForRef"></child>
          </div>
        </template>
        <script>
        import child from './child.vue'
          export default {
            components: { child },
            data () {
              return {
                childForRef: null,
              }
            },
            mounted() {
              this.childForRef = this.$refs.childForRef;
              console.log(this.childForRef.name);
            },
            methods: {
              sayHello() {
                this.childForRef.sayHello()
              }
            }
          }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        //子組件
        <template>
          <div>child 的內(nèi)容</div>
        </template>
        <script>
        export default {
          data () {
            return {
              name: '我是 child',
            }
          },
          methods: {
            sayHello () {
              console.log('hello');
              alert('hello');
            }
          }
        }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19

        五.Vuex通信

        組件通過(guò) dispatch 到 actions,actions 是異步操作,再 actions中通過(guò) commit 到 mutations,mutations 再通過(guò)邏輯操作改變 state,從而同步到組件,更新其數(shù)據(jù)狀態(tài)
        代碼示例:

        //父組件
        template>
          <div id="app">
            <ChildA/>
            <ChildB/>
          </div>
        </template>
        <script>
          import ChildA from './ChildA' // 導(dǎo)入A組件
          import ChildB from './ChildB' // 導(dǎo)入B組件
          export default {
            components: {ChildA, ChildB} // 注冊(cè)組件
          }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        //子組件A
        <template>
         <div id="childA">
           <h1>我是A組件</h1>
           <button @click="transform">點(diǎn)我讓B組件接收到數(shù)據(jù)</button>
           <p>因?yàn)辄c(diǎn)了B,所以信息發(fā)生了變化:{{BMessage}}</p>
         </div>
        </template>
        <script>
         export default {
           data() {
             return {
               AMessage: 'Hello,B組件,我是A組件'
             }
           },
           computed: {
             BMessage() {
               // 這里存儲(chǔ)從store里獲取的B組件的數(shù)據(jù)
               return this.$store.state.BMsg
             }
           },
           methods: {
             transform() {
               // 觸發(fā)receiveAMsg,將A組件的數(shù)據(jù)存放到store里去
               this.$store.commit('receiveAMsg', {
                 AMsg: this.AMessage
               })
             }
           }
         }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31
        //子組件B
        <template>
         <div id="childB">
           <h1>我是B組件</h1>
           <button @click="transform">點(diǎn)我讓A組件接收到數(shù)據(jù)</button>
           <p>點(diǎn)了A,我的信息發(fā)生了變化:{{AMessage}}</p>
         </div>
        </template>
        
        <script>
         export default {
           data() {
             return {
               BMessage: 'Hello,A組件,我是B組件'
             }
           },
           computed: {
             AMessage() {
               // 這里存儲(chǔ)從store里獲取的A組件的數(shù)據(jù)
               return this.$store.state.AMsg
             }
           },
           methods: {
             transform() {
               // 觸發(fā)receiveBMsg,將B組件的數(shù)據(jù)存放到store里去
               this.$store.commit('receiveBMsg', {
                 BMsg: this.BMessage
               })
             }
           }
         }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31
        • 32
        • 33
        //vuex
        import Vue from 'vue'
         import Vuex from 'vuex'
         Vue.use(Vuex)
         const state = {
           AMsg: '',
           BMsg: ''
         }
        
         const mutations = {
           receiveAMsg(state, payload) {
             // 將A組件的數(shù)據(jù)存放于state
             state.AMsg = payload.AMsg
           },
           receiveBMsg(state, payload) {
             // 將B組件的數(shù)據(jù)存放于state
             state.BMsg = payload.BMsg
           }
         }
        
         export default new Vuex.Store({
           state,
           mutations
         }) 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25

        六.$parent

        通過(guò)parent可以獲父組件實(shí)例 ,然 后通過(guò)這個(gè)實(shí)例就可以訪問(wèn)父組件的屬 性和方法 ,它還有一個(gè)兄弟parent可以獲父組件實(shí)例,然后通過(guò)這個(gè)實(shí)例就可以訪問(wèn)父組件的屬性和方法,它還有一個(gè)兄弟parent可以獲父組件實(shí)例,然后通過(guò)這個(gè)實(shí)例就可以訪問(wèn)父組件的屬性和方法,它還有一個(gè)兄弟root,可以獲取根組件實(shí)例。
        代碼示例:

        // 獲父組件的數(shù)據(jù)
        this.$parent.foo
        
        // 寫(xiě)入父組件的數(shù)據(jù)
        this.$parent.foo = 2
        
        // 訪問(wèn)父組件的計(jì)算屬性
        this.$parent.bar
        
        // 調(diào)用父組件的方法
        this.$parent.baz()
        
        //在子組件傳給父組件例子中,可以使用this.$parent.getNum(100)傳值給父組件。 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13

        七.sessionStorage傳值

        sessionStorage 是瀏覽器的全局對(duì)象,存在它里面的數(shù)據(jù)會(huì)在頁(yè)面關(guān)閉時(shí)清除 。運(yùn)用這個(gè)特性,我們可以在所有頁(yè)面共享一份數(shù)據(jù)。
        代碼示例:

        // 保存數(shù)據(jù)到 sessionStorage
        sessionStorage.setItem('key', 'value');
        
        // 從 sessionStorage 獲取數(shù)據(jù)
        let data = sessionStorage.getItem('key');
        
        // 從 sessionStorage 刪除保存的數(shù)據(jù)
        sessionStorage.removeItem('key');
        
        // 從 sessionStorage 刪除所有保存的數(shù)據(jù)
        sessionStorage.clear(); 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11

        注意:里面存的是鍵值對(duì),只能是字符串類(lèi)型,如果要存對(duì)象的話,需要使用 let objStr = JSON.stringify(obj) 轉(zhuǎn)成字符串然后再存儲(chǔ)(使用的時(shí)候 let obj = JSON.parse(objStr) 解析為對(duì)象)。
        推薦一個(gè)庫(kù) good-storage ,它封裝了sessionStorage ,可以直接用它的API存對(duì)象

        //localStorage
         storage.set(key,val) 
         storage.get(key, def)
        //sessionStorage
         storage.session.set(key, val)
         storage.session.get(key, val) 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6

        八.路由傳值

        使用問(wèn)號(hào)傳值
        A頁(yè)面跳轉(zhuǎn)B頁(yè)面時(shí)使用 this.r o u t e r . p u s h ( ’ / B ? n a m e = d a n s e e k ’ ) B 頁(yè) 面 可 以 使 用 t h i s . router.push(’/B?name=danseek’) B頁(yè)面可以使用 this.router.push(/B?name=danseek)B頁(yè)使this.route.query.name 來(lái)獲取A頁(yè)面?zhèn)鬟^(guò)來(lái)的值
        上面要注意router和route的區(qū)別
        使用冒號(hào)傳值
        配置如下路由:

        {
            path: '/b/:name',
            name: 'b',
            component: () => import( '../views/B.vue')
         }, 
        
        • 1
        • 2
        • 3
        • 4
        • 5

        在B頁(yè)面可以通過(guò) this.$route.params.name 來(lái)獲取路由傳入的name的值

        使用父子組件傳值
        由于router-view本身也是一個(gè)組件,所以我們也可以使用父子組件傳值方式傳值,然后在對(duì)應(yīng)的子頁(yè)面里加上props,因?yàn)閠ype更新后沒(méi)有刷新路由,所以不能直接在子頁(yè)面的mounted鉤子里直接獲取最新type的值,而要使用watch

        <router-view :type="type"></router-view>
        
        // 子頁(yè)面
        props: ['type']
        watch: {
               type(){
                   // console.log("在這個(gè)方法可以時(shí)刻獲取最新的數(shù)據(jù):type=",this.type)
               },
        }, 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9

        九.祖?zhèn)鲗O $attrs

        正常情況下需要借助父親的props作為中間過(guò)渡,但是這樣在父親組件就會(huì)多了一些跟父組件業(yè)務(wù)無(wú)關(guān)的屬性,耦合度高,借助$attrs可以簡(jiǎn)化些,而且祖跟孫都無(wú)需做修改
        祖組件:

        <template>
            <section>
                <parent name="grandParent" sex="男" age="88" hobby="code" @sayKnow="sayKnow"></parent>
            </section>
        </template>
        
        <script>
            import Parent from './Parent'
            export default {
                name: "GrandParent",
                components: {
                  Parent
                },
                data() {
                    return {}
                },
                methods: {
                  sayKnow(val){
                    console.log(val)
                  }
                },
                mounted() {
                }
            }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25

        父組件

        template>
          <section>
            <p>父組件收到</p>
            <p>祖父的名字:{{name}}</p>
            <children v-bind="$attrs" v-on="$listeners"></children>
          </section>
        </template>
        
        <script>
          import Children from './Children'
        
          export default {
            name: "Parent",
            components: {
              Children
            },
            // 父組件接收了name,所以name值是不會(huì)傳到子組件的
            props:['name'],
            data() {
              return {}
            },
            methods: {},
            mounted() {
            }
          }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26

        子組件

        <template>
          <section>
            <p>子組件收到</p>
            <p>祖父的名字:{{name}}</p>
            <p>祖父的性別:{{sex}}</p>
            <p>祖父的年齡:{{age}}</p>
            <p>祖父的愛(ài)好:{{hobby}}</p>
        
            <button @click="sayKnow">我知道啦</button>
          </section>
        </template>
        
        <script>
          export default {
            name: "Children",
            components: {},
            // 由于父組件已經(jīng)接收了name屬性,所以name不會(huì)傳到子組件了
            props:['sex','age','hobby','name'],
            data() {
              return {}
            },
            methods: {
              sayKnow(){
                this.$emit('sayKnow','我知道啦')
              }
            },
            mounted() {
            }
          }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31

        十.孫傳祖使用$listeners

        文字內(nèi)容同第九個(gè)

        祖組件

        <template>
          <div id="app">
            <children-one @eventOne="eventOne"></children-one>
            {{ msg }}
          </div>
        </template>
        <script>
        import ChildrenOne from '../src/components/children.vue'
        export default {
          name: 'App',
          components: {
            ChildrenOne,
          },
          data() {
            return {
              msg: ''
            }
          },
          methods: {
            eventOne(value) {
              this.msg = value
            }
          }
        }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25

        父組件

        <template>
          <div>
            <children-two v-on="$listeners"></children-two>
          </div>
        </template>
        
        <script>
        import ChildrenTwo from './childrenTwo.vue'
        
        export default {
          name: 'childrenOne',
          components: {
            ChildrenTwo
          }
        }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16

        子組件

        <template>
          <div>
            <button @click="setMsg">點(diǎn)擊傳給祖父</button>
          </div>
        </template>
        
        <script>
        export default {
          name: 'children',
          methods: {
            setMsg() {
              this.$emit('eventOne', '123')
            }
          }
        }
        </script> 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16

        十一.promise傳參

        promise 中 resolve 如何傳遞多個(gè)參數(shù)

        //類(lèi)似與這樣使用,但實(shí)際上后面兩個(gè)參數(shù)無(wú)法獲取
        promise = new Promise((resolve,reject)=>{
            let a = 1
            let b = 2
            let c = 3
            resolve(a,b,c) 
        })
        promise.then((a,b,c)=>{
            console.log(a,b,c)
        }) 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10

        resolve() 只能接受并處理一個(gè)參數(shù),多余的參數(shù)會(huì)被忽略掉。
        如果想多個(gè)用數(shù)組,或者對(duì)象方式。。
        數(shù)組

        promise = new Promise((resolve,reject)=>{
            resolve([1,2,3]) 
        })
        promise.then((arr)=>{
            console.log(arr[0],arr[1],arr[2])
        }) 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7

        對(duì)象

        promise = new Promise((resolve,reject)=>{
            resolve({a:1,b:2,c:3}) 
        })
        promise.then(obj=>{
            console.log(obj.a,obj.b,obj.c)
        }) 
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7

        十二.全局變量

        定義一個(gè)全局變量,在有值的組件直接賦值,在需要的組件內(nèi)直接使用就可以了。


        轉(zhuǎn)自:csdn 作者:Frazier_梁超


        藍(lán)藍(lán)設(shè)計(jì)m.hengshangtqd.cn )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶(hù)體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

        日歷

        鏈接

        個(gè)人資料

        存檔

        主站蜘蛛池模板: 人人一区二区| 国产精品自拍三级在线观看| 中文字幕亚洲综合久久| 亚洲AV永久天堂在线观看| 免费偷拍| 国产婷婷丁香五月麻豆| 亚洲不卡| 99在线精品国自产拍不卡| 国产精品99久久久久久成人| 亚洲人成无码网站18禁| 少妇被粗大的猛进69视频| 色偷偷成人综合亚洲精品| 熟女性饥渴一区二区三区| 久久99精品一区二区三区| 久久久久久久久熟女AV| 国产国产午夜福利视频| 国产精品久久久国产盗摄| 国产裸体舞一区二区三区| 亚洲综合色区在线播放2019| 黄色段片一区二区三区| 亚洲AV无码一区二区一二区| 一区二区三区无码视频免费福利| 99国产在线视频| 久草资源| 亚洲 欧美 影音先锋| 国产午夜美女福利短视频| 亚洲中文字幕无码中字| 成人欧美一区二区三区在线观看| 永泰县| 国产伊人色噜噜综合网| 无码人妻一区二区三区免费| 116美女极品a级毛片 | 国产国拍亚洲精品永久不卡| 4hc44四虎在线永久地址| 国产精品沙发午睡系列990531 | 亚洲国产午夜精品福利| 亚洲国产另类久久久精品| 国产小视频免费观看| 亚洲www| 久久精品国产亚洲av麻豆长发| 熟女系列丰满熟妇AV|