Vue項(xiàng)目和react項(xiàng)目寫法簡(jiǎn)單比較

數(shù)據(jù)綁定

vue核心是一個(gè)允許采用簡(jiǎn)潔的模板來聲明式將數(shù)據(jù)渲染進(jìn)DOM的系統(tǒng)醉锅。
舉個(gè)栗子:官網(wǎng)寫法如下

<div id="app">
  {{ message }}
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

在實(shí)際項(xiàng)目中贮庞,

  export default {
    data(){
      return {
        showCityStatus:false,
        city:"",
        cityCN:"國籍",
        bankCardForm:{
        "bankAccountNo": "",
        "bankAddress": "",
        },
        currencyList:[]
      }
    },
    methods:{
      cityStatus(){},
      addChargeCard(){},
    },
    mounted(){},
    created(){}
  }

在組件中是通過在data(){}這個(gè)函數(shù)中進(jìn)行綁定的边苹,初始化數(shù)據(jù)狀態(tài)類似于react里面的初始化狀態(tài):this.state={blah,blah,blah}.只要在data中定義了變量就可以在vue里面的template代碼中使用凉夯。我們使用data里面的cardName數(shù)據(jù)就可以這樣寫:

<div  id="app"> {{cardName}}</div>

關(guān)于指令

在Vue項(xiàng)目中會(huì)用到很多指令淮韭,這些指令可以直接綁定到元素身上垢粮。在react中一般都是直接在JSX代碼中進(jìn)行綁定。下面來說一下react如何綁定以及v-指令

1靠粪,v-bind特性被稱為指令蜡吧,指令帶有前綴v-毫蚓。
舉個(gè)官方寫法栗子:

<div id="app-2">
  <span v-bind:title="message">
    鼠標(biāo)懸停幾秒鐘查看此處動(dòng)態(tài)綁定的提示信息!
  </span>
</div>

var app2 = new Vue({
  el: '#app-2',
  data: {
    message: '頁面加載于 ' + new Date().toLocaleString()
  }
})
提示:span和div標(biāo)簽是具有title屬性的斩跌,這個(gè)屬性允許人們將鼠標(biāo)停留在上面幾秒可以看到title里面的值绍些。

這里將message設(shè)置了值,那么通過v-bind就可以將title和message動(dòng)態(tài)綁定耀鸦。在Vue項(xiàng)目中的寫法是不用寫el:"#app-2"的柬批,因?yàn)樵陧?xiàng)目中已經(jīng)模塊化,當(dāng)前組件內(nèi)使用到的狀態(tài)都可以直接使用袖订。在react里面也是直接寫狀態(tài)名氮帐。

2,v-if 是否顯示某綁定元素

<div id="app-3">
  <p v-if="seen">現(xiàn)在你看到我了</p>
</div>
var app3 = new Vue({
  el: '#app-3',
  data: {
    seen: true
  }
})

v-if指令寫法同理上面洛姑。在這里說一下react里面的寫法上沐。可以通過{}里面的三元運(yùn)算符來展示p標(biāo)簽楞艾。舉個(gè)栗子:

{
  this.state.seen?<p v-if="seen">現(xiàn)在你看到我了</p>:null
}

這種寫法在Vue里面應(yīng)該也可以参咙,但是Vue提供了v-if指令,我們就爽快的使用吧硫眯,還能減少代碼量蕴侧。
3,v-for指令两入。
這個(gè)指令經(jīng)常會(huì)用到净宵,是用來循環(huán)展示數(shù)組的。官方文檔的栗子:

<div id="app-4">
  <ol>
    <li v-for="todo in todos" :key="todo.id">
      {{ todo.text }}
    </li>
  </ol>
</div>
var app4 = new Vue({
  el: '#app-4',
  data: {
    todos: [
      { text: '學(xué)習(xí) JavaScript' },
      { text: '學(xué)習(xí) Vue' },
      { text: '整個(gè)牛項(xiàng)目' }
    ]
  }
})

Vue項(xiàng)目中寫法同上裹纳。在react中可以使用map來進(jìn)行循環(huán)渲染择葡。舉個(gè)栗子:

{
  this.state.todos.map((todo,index)=> (<ol key={todo.id}>
    <li>
      {{ todo.text }}
    </li>
  </ol>))
}

4,v-text剃氧。
這個(gè)指令和標(biāo)簽內(nèi)的內(nèi)容設(shè)置是一樣的敏储。

<span v-text="msg"></span>
<!-- 和下面的一樣 -->
<span>{{msg}}</span>

5,v-model她我。
這個(gè)指令可以用來創(chuàng)建雙向數(shù)據(jù)綁定虹曙,用在input,textarea番舆,select里面。這個(gè)指令會(huì)忽略所有表單元素的value矾踱,checked恨狈,selected初始值∏航玻總是將Vue實(shí)例data函數(shù)里面的數(shù)據(jù)作為數(shù)據(jù)來源禾怠。所以要在data函數(shù)里面聲明初始值返奉。
雙向數(shù)據(jù)綁定,我理解的是用戶在輸入的數(shù)據(jù)的時(shí)候吗氏,組件中的data狀態(tài)也進(jìn)行了改變芽偏,可以直接拿到輸入的值。
官方給出的栗子:

<select v-model="selected">
  <option v-for="option in options" v-bind:value="option.value">
    {{ option.text }}
  </option>
</select>
<span>Selected: {{ selected }}</span>
new Vue({
  el: '...',
  data: {
    selected: 'A',
    options: [
      { text: 'One', value: 'A' },
      { text: 'Two', value: 'B' },
      { text: 'Three', value: 'C' }
    ]
  }
})

在這里強(qiáng)調(diào)一下Vue里面的input修飾符

lazy

在默認(rèn)情況下弦讽,v-model 在每次 input 事件觸發(fā)后將輸入框的值與數(shù)據(jù)進(jìn)行同步 (除了上述輸入法組合文字時(shí))污尉。你可以添加 lazy 修飾符,從而轉(zhuǎn)變?yōu)槭褂?change事件進(jìn)行同步:

<input v-model.lazy="msg" >
number

如果想自動(dòng)將用戶的輸入值轉(zhuǎn)為數(shù)值類型往产,可以給 v-model 添加 number 修飾符:這通常很有用被碗,因?yàn)榧词乖?type="number" 時(shí),HTML 輸入元素的值也總會(huì)返回字符串仿村。如果這個(gè)值無法被 parseFloat() 解析锐朴,則會(huì)返回原始的值。

<input v-model.number="age" type="number">
trim

如果要自動(dòng)過濾用戶輸入的首尾空白字符蔼囊,可以給 v-model 添加 trim 修飾符:

<input v-model.trim="msg">

6焚志,v-once指令用來進(jìn)行優(yōu)化更新性能饵隙。使用了該指令的元素或者組件速挑,值渲染一次,隨后的重新渲染腐泻,將被認(rèn)為是靜態(tài)內(nèi)容并跳過滴肿。
7岳悟,ref。Vue中使用ref來對(duì)元素或者子組件注冊(cè)引用信息泼差。這個(gè)引用信息贵少,會(huì)注冊(cè)在父組件的refs對(duì)象上,只想DOM元素或者組件實(shí)例堆缘。使用的時(shí)候需要在渲染結(jié)束后進(jìn)行使用滔灶。在渲染完成前不能訪問他們,還不存在吼肥。
這個(gè)屬性和react里面的ref是一樣的录平。寫法不太一樣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缀皱,一起剝皮案震驚了整個(gè)濱河市斗这,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌啤斗,老刑警劉巖表箭,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钮莲,居然都是意外死亡免钻,警方通過查閱死者的電腦和手機(jī)彼水,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來极舔,“玉大人凤覆,你說我怎么就攤上這事〔鹞海” “怎么了盯桦?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)稽揭。 經(jīng)常有香客問我俺附,道長(zhǎng),這世上最難降的妖魔是什么溪掀? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任事镣,我火速辦了婚禮,結(jié)果婚禮上揪胃,老公的妹妹穿的比我還像新娘璃哟。我一直安慰自己,他們只是感情好喊递,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布随闪。 她就那樣靜靜地躺著,像睡著了一般骚勘。 火紅的嫁衣襯著肌膚如雪铐伴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天俏讹,我揣著相機(jī)與錄音当宴,去河邊找鬼。 笑死泽疆,一個(gè)胖子當(dāng)著我的面吹牛户矢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播殉疼,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼梯浪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了瓢娜?” 一聲冷哼從身側(cè)響起挂洛,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眠砾,沒想到半個(gè)月后抹锄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荠藤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年伙单,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哈肖。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吻育,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淤井,到底是詐尸還是另有隱情布疼,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布币狠,位于F島的核電站游两,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏漩绵。R本人自食惡果不足惜贱案,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望止吐。 院中可真熱鬧宝踪,春花似錦、人聲如沸碍扔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽不同。三九已至厉膀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間二拐,已是汗流浹背服鹅。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卓鹿,地道東北人菱魔。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吟孙,于是被迫代替她去往敵國和親澜倦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • vue概述 在官方文檔中杰妓,有一句話對(duì)Vue的定位說的很明確:Vue.js 的核心是一個(gè)允許采用簡(jiǎn)潔的模板語法來聲明...
    li4065閱讀 7,233評(píng)論 0 25
  • Vue也已經(jīng)升級(jí)到2.0版本了藻治,到現(xiàn)在為止(2016/11/19)比較流行的MVVM框架有AngularJS(也有...
    彬_仔閱讀 27,228評(píng)論 12 114
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,221評(píng)論 0 6
  • 電影,《從你的全世界路過》雏节,經(jīng)典臺(tái)詞還是很多的胜嗓,文采斐然,意韻深長(zhǎng)钩乍。 我希望有個(gè)如你一般的人辞州,如這山間...
    可桐閱讀 3,283評(píng)論 105 177
  • 一路走來真的不易
    小王子的海綿寶寶閱讀 260評(píng)論 1 0