Vue jsx全面指南

通常開發(fā)vue我們使用的是模板語法,獨(dú)有的SFC在我們開發(fā)組件的時(shí)候非常方便,將script,template,style三者在同一個文件里面實(shí)現(xiàn),大大提升了組件的可以移植性。

但是模板語法寫多了也非常惡心,對于復(fù)雜動態(tài)渲染場景,模板都處理的很吃力,所以vue在2.0之后也增加了對jsx的支持,為了學(xué)習(xí)jsx,順帶可以理解下react

官方文檔中關(guān)于jsx的使用介紹還是太少了,一開始寫起來真的很不順手,經(jīng)過一個項(xiàng)目的使用,我把遇到的絕大多數(shù)情況總結(jié)下,希望可以幫到大家

官方例子
這里比較詳細(xì)我就不贅述了,按照官方配置,一般場景是可以覆蓋的,我下面將官方例子中未說明的情況情況羅列下。

  1. v-model

   <el-input v-model="inputValue"/> 
   
   //
   
   <el-input 
    value={this.inputValue} 
    on-input={val => this.inputValue = val}/>
    
  
   
      
  1. v-for

    <el-tag
        v-for="(item, index) in content"
        :key="index"
        type="success"
    >
    {{item.name}}
    </el-tag>
    
    // 
    
    {
        this.content.map((item, index) => {
            return (
                <el-tag
                    key={index}
                    type="success"
                >
                {item.name}
                </el-tag>
            )
        })
    }
  1. 事件 & 按鍵修飾符

    <el-input
            @keyup.native.enter="fetch()"
            class="width-20"
            prefix-icon="el-icon-search"
            placeholder="關(guān)鍵字搜索"
          />

    //
    
    <el-input
            class="width-20"
            nativeOn-keyup={arg => arg.keyCode === 13 &&    this.fetch()}
            prefix-icon="el-icon-search"
            placeholder="關(guān)鍵字搜索"
          />
  1. 預(yù)置參數(shù)

    <el-button
                @click="openDialog('create')"                
                type="primary"
                size="mini"
              >

    //
    
    <el-button
                on-click={this.openDialog.bind(this, 'create')}
                type="primary"
                size="mini"
              >
  1. scopedSlots 作用域插槽敲黑板

    <el-table-column>
        <template scope-slot="props">
            <el-button
               type="primary"
               size="mini"
               @click="openDialog('edit',props.row)"
               >編輯
            </el-button>
        </template>
    </el-table-column>

    // 
    
    <el-table-column
        key={index}
        label={item.name}
        width={item.width}
        {...{
            scopedSlots: {
                default: props => {
                return (
                <el-button
                    type="primary"
                    size="mini"
                    on-click={this.openDialog.bind(this,'edit',props.row)}
                    >編輯
            )
        }
        }
        }}
    />
  1. scopedSlots 值傳遞敲黑板

    <slot :isAdvancedPanelShow="isAdvancedPanelShow"></slot>
    
    // 
    
    {this.$scopedSlots.default({
       isAdvancedPanelShow: this.isAdvancedPanelShow
    })}

官方文檔在配上以上的總結(jié),我已經(jīng)像是在寫react項(xiàng)目了,寫起來還是蠻爽的。重點(diǎn)還是要對各種directives了解清楚,知道其實(shí)現(xiàn)原理,在轉(zhuǎn)成jsx應(yīng)該就沒啥壓力的。vue和react真是越來越像了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Vue也已經(jīng)升級到2.0版本了,到現(xiàn)在為止(2016/11/19)比較流行的MVVM框架有AngularJS(也有...
    彬_仔閱讀 27,409評論 12 114
  • 一,vue是什么? Vue.js(讀音 /vju?/, 類似于view) 是一套構(gòu)建用戶界面的漸進(jìn)式框架。與其他重...
    不成才的IT狗閱讀 3,202評論 0 31
  • 沒錯,我是一個愛哭鬼。 愛哭,仿佛已經(jīng)成為了矯情的代名詞。 我今天又哭了,一個比較好的同事要離職,在她收拾好東西,...
    畫語青黛閱讀 365評論 0 0
  • 這章主要講述了 CALayer 的一些屬性。 CALayer 可以通過 contents 設(shè)置一個 CGImage...
    圣斗士皮皮閱讀 364評論 0 1
  • 我愛你 真的很愛你 你的聲音 你的一舉一動 你的一切 可是,你不會屬于我 教人傷心 春天的風(fēng)吹麥浪 冬天的雪 又下了一夜
    識小錄記閱讀 173評論 1 0

友情鏈接更多精彩內(nèi)容