真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在vue中使用v-model雙向綁定父子組件時(shí)需要注意哪些問(wèn)題-創(chuàng)新互聯(lián)

這篇文章主要介紹了在vue中使用v-model 雙向綁定父子組件時(shí)需要注意哪些問(wèn)題,此處通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下:

成都創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的10年時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶,如軟裝設(shè)計(jì)等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶的一致贊揚(yáng)。

vue是什么軟件

Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,Vue與其它大型框架的區(qū)別是,使用Vue可以自底向上逐層應(yīng)用,其核心庫(kù)只關(guān)注視圖層,方便與第三方庫(kù)和項(xiàng)目整合,且使用Vue可以采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫(kù)開(kāi)發(fā)復(fù)雜的單頁(yè)應(yīng)用。

[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "value"

引發(fā)這個(gè)警告的是一個(gè)自定義組件RxSelect

Vue.component("RxSelect", {
 model: {
 prop: "value",
 event: "change",
 },
 props: {
 value: [Number, String],
 map: Map,
 },
 template: `
  
  `,
});

吾輩使用的代碼看起來(lái)代碼貌似沒(méi)什么問(wèn)題?


 當(dāng)前選擇的性別是: {{map.get(sex)}}
 
   

JavaScript 代碼

new Vue({
 el: "#app",
 data: {
 map: new Map().set(1, "保密").set(2, "男").set(3, "女"),
 sex: "",
 },
});

經(jīng)測(cè)試,程序本身運(yùn)行正常,父子組件的傳值也沒(méi)什么問(wèn)題,雙向數(shù)據(jù)綁定確實(shí)生效了,然而瀏覽器就是一直報(bào)錯(cuò)。

嘗試解決

吾輩找到一種方式

  1. 為需要雙向綁定的變量在組件內(nèi)部data 聲明一個(gè)變量innerValue,并初始化為value

  2. select 上使用v-model綁定這個(gè)變量innerValue

  3. 監(jiān)聽(tīng)value 的變化,在父組件中value 變化時(shí)修改innerValue 的值

  4. 監(jiān)聽(tīng)innerValue 的變化,在變化時(shí)使用this.$emit('change', val) 告訴父組件需要更新value 的值

Vue.component("RxSelect", {
 model: {
 prop: "value",
 event: "change",
 },
 props: {
 value: [Number, String],
 map: Map,
 },
 data() {
 return {
  innerValue: this.value,
 };
 },
 watch: {
 value(val) {
  this.innerValue = val;
 },
 innerValue(val) {
  this.$emit("change", val);
 },
 },
 template: `
 
 
 
 `,
});

使用代碼完全一樣,然而組件RxSelect 的代碼卻多了許多。。。

解決

一種更優(yōu)雅的方式是使用computed 計(jì)算屬性以及其的get/set,代碼增加的程度還是可以接受的

Vue.component("RxSelect", {
 model: {
 prop: "value",
 event: "change",
 },
 props: {
 value: [Number, String],
 map: Map,
 },
 computed: {
 innerValue: {
  get() {
  return this.value;
  },
  set(val) {
  this.$emit("change", val);
  },
 },
 },
 template: `
 
 
 
 `,
});

到此這篇關(guān)于在vue中使用v-model 雙向綁定父子組件時(shí)需要注意哪些問(wèn)題的文章就介紹到這了,更多相關(guān)在vue中使用v-model 雙向綁定父子組件時(shí)需要注意哪些問(wèn)題的內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,!


分享題目:在vue中使用v-model雙向綁定父子組件時(shí)需要注意哪些問(wèn)題-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/dggpss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部