精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在 Vue 中使用 JSX 以及使用它的原因

開發 前端
Vue.js 具有簡單的 API 和幾個選項,可用于在我們的組件中定義HTML模板。那么,我們為什么要使用 JSX 而不是其他模板定義呢?

Vue.js 具有簡單的 API 和幾個選項,可用于在我們的組件中定義HTML模板。

我們可以使用標簽選項,在根組件實例上定義template屬性,或者使用單文件組件。

上面的選項很棒并且可以完美地工作,但是,在您的應用程序的生命周期中,有時會感到笨拙,設計過度或非常不靈活。

[[314407]]

那么,我們為什么要使用 JSX 而不是其他模板定義呢?

  • JSX 更易讀, 的寫法一看就是比 this.$createElement('div', {}, […])簡潔很多。
  • JSX 也是 JavaScript。
  • Vue支持JSX。
  • JSX 使自定義 Vue 組件更容易導入和管理。

簡介

先舉一個例子來說明為什么 JSX 是好的。

我們要構建一個組件,該組件可以是普通的單行文本輸入或多行輸入(文本區域)。我們的模板聲明可能看起來像這樣。

  1. typeof10;//=>'number'typeof'Hello';//=>'string'typeoffalse;//=>'boolean'typeof{a:1};//=>'object'typeofundefined;//=>'undefined'typeofSymbol();//=>'symbol' 

從上面的代碼片段中可以看到,我們很快就會遇到一些問題,比如重復代碼等等。想象一下,必須支持input上面所列的各種屬性。上面的這個小片段將會增長并成為一個難以維護的噩夢。

要解決這個問題,我們需要使用Vue進行降級處理,因此需要使用理接近Vue的內部API來解決這個問題。

render() 方法

注意:這里并不是說沒有JSX就沒有一種簡單的方法來處理上面的問題,只是說將這個邏輯移動到帶有JSX的render()方法可以使組件更直觀。

我們在 Vue 中創建的每個組件都有一個render方法。這個就是 Vue 選擇渲染組件的地方。即使我們不定義這個方法,Vue 也會為我們做這件事。

這意味著當我們在 Vue 中定義 HTML 模板時,Vue 的模板編譯器將其編譯為一個createElement函數,該函數帶有幾個參數并從render函數返回結果。

為了修復上一節中的代碼,我們刪除了template屬性或template標簽,并在組件上定義了render()方法。如果在組件上定義了render方法,則 Vue 將忽略template定義。

  1. classCat{}constmyCat=newCat();myCatinstanceofCat;//=>true 

上面的代碼做了幾件事:

  • render方法從Vue獲取一個createElement助手。
  • 我們以編程方式定義我們的標簽。
  • 然后,我們創建標簽并將其屬性,類等作為對象傳遞。我們可以傳遞給createElement的選項很多。
  • 我們返回新創建的元素進行渲染。

我們為 Vue 組件定義的每個模板都將轉換為可返回createElement函數的render方法。因為這個原因,render方法將優先于模板定義。

舉個例子:

  1. //HTML<div><p>Onlyyoucanstopforestfires</p></div> 

模板編譯器將把上面的 HTML 轉換成:

  1. ...render(createElement){returncreateElement('div',{},createElement('p',{},'Onlyyoucanstopforestfires'))}... 

現在你可能會問這個問題:“對可讀性來說這不好嗎?” 答案是肯定的。一旦定義了具有許多元素嵌套級別或具有多個同級元素的組件,我們就會遇到這個新問題。

這就是 JSX 出現的原因,它可以很好的解決此類問題。

JSX 是什么

JSX 是 Facebook 工程團隊創造的一個術語。

JSX 是 JavaScript 的類似XML的語法擴展,沒有任何定義的語義。

JSX 不打算由引擎或瀏覽器實現。相反,我們將使用 Babel 之類的轉置器將JSX轉換成常規的 JS 。

  1. //此行是JSX的示例constheading=<h1>WelcometoScotch</h1>

基本上,JSX 允許我們在 JS 中使用類似 Html 的語法。

配置 Vue 以使用 JSX

如果使用的 Vue-cli 大于或等于 3.0 版本,那么就直接可以使用JSX的語法了。

如果您使用的是不支持 JSX 的Vue-cli較舊版本,則可以通過安裝babel-preset-vue-app來添加它,并將其添加到您的.babelrc文件中。

  1. #Usingnpmnpminstall--save-devbabel-preset-vue-app#Usingyarnyarnadd--devbabel-preset-vue-app 

在.babelrc文件中,添加:

  1. {"presets":["vue-app"]} 

我們現在可以在組件的render函數中使用 JSX。

在 Vue 中使用 JSX 需要注意的地方

在 Vue 中使用JSX需要注意幾點。

要監聽 JSX 中的事件,我們需要“on”前綴。例如,將onClick用于單擊事件。

  1. render(createElement){return(<buttononClickbuttononClick={this.handleClick}></button>)} 

要修改事件,請使用

  1. render(createElement){return(<buttononClick:preventbuttononClick:prevent={this.handleClick}></button>)} 

綁定變量,注意這里不是使用 :

  1. render(createElement){return(<buttoncontentbuttoncontent={this.generatedText}></button>)} 

將HTML字符串設置為元素的內容,使用domPropsInnerHTML而不是使用v-html

  1. render(createElement){return(<buttondomPropsInnerHTMLbuttondomPropsInnerHTML={htmlContent}></button>)} 

我們也可以展開一個大對象:

  1. render(createElement){return(<button{...this.largeProps}></button>)} 

在 render 中使用JSX

回到我們最初的“TextField”組件?,F在我們已經在 Vue 應用程序中啟用了 JSX,我們現在可以這樣做了。

  1. render(createElement){constinputAttributes={class:'input-fieldhas-outline',//classdefinitiononClick:this.handleClick//eventhandlerbackdrop:false//customprop}constinputMarkup=this.multiline?<textarea{...inputAttributes}></textarea>:<input{...inputAttributes}/>returninputMarkup} 

導入 Vue JS 組件

在 Vue 中使用JSX的另一個好處是,我們不再需要注冊所需的每個組件。我們只是導入和使用。

  1. import{Button}from'../components'exportdefault{render(createElement){return<ButtonprimaryButtonprimary={true}>Edit</Button>}} 

如何使 JSX 與 TypeScript 一起使用

TypeScript 用作一種向 JavaScript添加類型檢查的機制。要在 JSX 支持 TypeScript中,需要修改 tsconfig.json。

要在 TypeScript 中啟用 JSX,請先將該文件另存為.tsx文件,然后將tsconfig.json修改為包括:

  1. {"compilerOptions":{...."jsx":"preserve",}} 

將jsx選項設置為“preserve”意味著 TypeScript 不應處理JSX。這樣做使 Babel 可以控制所有JSX 和 TypeScript 堅持使用類型,因為它尚不支持 Vue JSX。

然后在項目中創建一個jsx.d.ts文件,并為 Vue 添加 TypeScript JSX 聲明。

  1. importVue,{VNode}from'vue'declareglobal{namespaceJSX{interfaceElementextendsVNode{}interfaceElementClassextendsVue{}interfaceElementAttributesProperty{$props:{}}interfaceIntrinsicElements{[elemName:string]:any}}} 

確保 TypeScript 可以加載聲明文件?;蛘?,可以通過以下方式在tsconfig.json中為其添加自動加載功能:

  1. {"compilerOptions":{..."typesRoot":["./node_modules/@types","./types"]}} 

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2012-08-13 09:15:54

Go開發語言編程語言

2022-06-23 08:00:53

PythonDateTime模塊

2024-01-18 08:37:33

socketasyncio線程

2021-06-09 09:36:18

DjangoElasticSearLinux

2021-03-09 07:27:40

Kafka開源分布式

2015-08-27 09:46:09

swiftAFNetworkin

2022-05-17 08:25:10

TypeScript接口前端

2011-08-10 09:31:41

Hibernateunion

2019-09-16 19:00:48

Linux變量

2024-09-06 11:34:15

RustAI語言

2020-11-30 11:55:07

Docker命令Linux

2014-07-02 09:47:06

SwiftCocoaPods

2020-04-09 10:18:51

Bash循環Linux

2025-10-16 05:00:00

2019-04-23 15:20:26

JavaScript對象前端

2023-11-07 09:06:05

MySQL索引

2022-10-25 09:07:28

Linuxxargs命令

2023-12-01 09:18:27

AxiosAxios 庫

2015-11-26 10:57:56

DockerOpen vSwitc

2021-09-10 10:30:22

Java代碼
點贊
收藏

51CTO技術棧公眾號

国产裸舞福利在线视频合集| 欧美日韩在线视频免费| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | sm捆绑调教国产免费网站在线观看| 成人aaaa免费全部观看| 日韩av免费一区| 国产传媒免费在线观看| 成人知道污网站| 欧美午夜电影网| 国产精品igao激情视频| 黑人与亚洲人色ⅹvideos| 精品一区二区三区久久久| 性欧美暴力猛交69hd| 国产一二三av| 老司机精品在线| 欧美日韩成人综合| 欧美成人一区二区在线观看| 欧美大片免费观看在线观看网站推荐| 日韩少妇内射免费播放18禁裸乳| 欧美激情二区| 91麻豆视频网站| 91精品视频在线免费观看| 日韩毛片一区二区三区| 天天做天天爱天天爽综合网| 日韩高清有码在线| 男女污污视频网站| 电影一区二区| 午夜精品国产更新| 熟女视频一区二区三区| yw193.com尤物在线| 成人app下载| aa成人免费视频| 少妇又紧又色又爽又刺激视频| 欧美三级网页| 精品国内亚洲在观看18黄| 国产成人无码一区二区在线观看| 欧美精品三级在线| 欧美日韩精品福利| 91热这里只有精品| 日韩伦理在线一区| 亚洲国产中文字幕| 色哺乳xxxxhd奶水米仓惠香| 免费高清完整在线观看| 国产欧美精品在线观看| 日本高清不卡三区| 欧美亚洲日本| 久久亚区不卡日本| 精品欧美一区二区在线观看视频| 亚洲av无码乱码国产麻豆| 麻豆精品久久久| 国产精品午夜视频| 丰满熟女人妻一区二区三| 日韩精品一二三| 国产精品99久久99久久久二8| 国产福利拍拍拍| 91久久久久| 国内精品免费午夜毛片| 国产在线观看免费av| 午夜精品免费| 久久久在线观看| 久久久久噜噜噜亚洲熟女综合| 围产精品久久久久久久| 久久视频在线视频| 农村黄色一级片| 欧美一区免费| 欧美丰满老妇厨房牲生活| 黄色一级视频在线观看| 在线成人www免费观看视频| 久久久亚洲成人| 色网站在线播放| 国产精品久久777777毛茸茸| 欧美又大又粗又长| 精品国产乱子伦| 麻豆一区二区三| 亚洲一区亚洲二区亚洲三区| 刘亦菲毛片一区二区三区| 高清久久久久久| 精品久久精品久久| 国产在线观看免费网站| 国产精品污www在线观看| 日本一区二区免费高清视频| а√资源新版在线天堂| 亚洲一区二区美女| 国产a级一级片| 素人啪啪色综合| 欧美一级二级三级乱码| 少妇一级淫片免费放播放| 亚洲视频分类| 日韩中文字幕视频在线| 欧美色图亚洲天堂| 美女久久网站| 成人免费网站在线看| 亚洲国产精品久久人人爱潘金莲 | 一区二区三区丝袜| 日本少妇高潮喷水视频| 欧美午夜三级| 亚洲国产精品热久久| 国产毛片久久久久久久| 久久久久久久久久久妇女| 国模私拍一区二区三区| 国产精华7777777| 国产ts人妖一区二区| 欧美精品一区二区三区在线看午夜 | 最新欧美色图| 欧美一区二区视频观看视频| 欲求不满的岳中文字幕| 日韩欧美一区免费| 91国产在线精品| 一道本在线视频| 91天堂素人约啪| 中文字幕精品一区日韩| 中文字幕在线视频网站| 91麻豆精品国产| 亚洲综合网在线观看| 欧美69视频| 国产精品白嫩美女在线观看| 亚洲黄色精品视频| 国产精品成人免费在线| 国产成人精品视频免费看| 国产精品一区二区精品视频观看 | 91视频免费网站| 黄色在线视频观看网站| 午夜伦理一区二区| 欧美精品 - 色网| 日韩国产一区| 日韩免费黄色av| 色网站免费观看| 亚洲激情自拍偷拍| 亚洲三级在线观看视频| 国产一区二区三区不卡视频网站| 国a精品视频大全| 99热这里只有精| 国产精品美女视频| 毛片在线视频观看| 最新欧美色图| 日韩激情第一页| 国产精品.www| 九色综合国产一区二区三区| 日韩免费三级| 高清电影一区| 国产午夜精品久久久 | 99亚洲一区二区| 亚洲第一页在线| 六月婷婷久久| 高清在线视频不卡| 精品成人一区二区三区| 麻豆一区产品精品蜜桃的特点 | 中文字幕亚洲成人| www.久久久精品| 91亚洲国产高清| 国产区精品在线观看| 成人av电影观看| 在线免费视频一区二区| 国产精久久一区二区三区| 久久精品人人做人人爽电影蜜月| 国产一区二区不卡视频| a'aaa级片在线观看| 亚洲第一区中文字幕| 日韩乱码人妻无码中文字幕| 粉嫩aⅴ一区二区三区四区 | 欧美午夜激情影院| 日韩高清在线一区| 日韩欧美一区二区三区四区| 深夜视频一区二区| 日韩一二三在线视频播| 亚洲一卡二卡在线| 亚洲欧美日韩国产手机在线| 欧美性猛交乱大交| 精品91久久久久| 久久99精品久久久久久水蜜桃| 美女高潮在线观看| 亚洲开心激情网| 中文字幕 自拍偷拍| 国产精品久久久久久久久免费桃花| 亚洲精品性视频| 欧美黄色大片网站| 国产伦精品一区二区三区高清版| 国产三级电影在线播放| 亚洲欧洲在线视频| 亚洲在线视频播放| 亚洲美女视频一区| 少妇激情一区二区三区视频| 爽爽淫人综合网网站| 青青草一区二区三区| 99久久精品免费看国产四区| av资源中文在线| 国产亚洲福利一区| 国产精品一区二区av白丝下载| 一区二区三区精品久久久| 亚洲蜜桃精久久久久久久久久久久| 日韩在线a电影| 丁香色欲久久久久久综合网| 亚洲精品小区久久久久久| 国产美女精品视频免费观看| 精精国产xxxx视频在线中文版 | 国产ts在线观看| 久久久国产精品一区二区中文| 在线成人性视频| 久草在线综合| 国产日本欧美在线观看 | 国产一区二区三区电影在线观看| 亚洲精品免费在线视频| 亚洲国产欧美日本视频| 乱亲女秽乱长久久久| 天堂av在线播放| 7777精品伊人久久久大香线蕉的 | 91丝袜脚交足在线播放| 在线免费日韩片| 久久99视频免费| melody高清在线观看| 欧美精品一区二区蜜臀亚洲| 伊人网视频在线| 精品久久久久久国产91| 天天做夜夜爱爱爱| 国产欧美日韩精品a在线观看| 国产一级黄色录像| 国产乱码精品一品二品| 日韩av片网站| 久久久久久穴| 日本中文字幕亚洲| 中文字幕亚洲综合久久五月天色无吗''| 另类欧美小说| 国产精品色在线网站| 91夜夜揉人人捏人人添红杏| 成人日韩精品| 欧美在线不卡区| 操喷在线视频| 九九综合九九综合| 成人a在线视频免费观看| 国产一区二区日韩精品欧美精品| 五月婷婷六月丁香| 精品裸体舞一区二区三区| 国产免费黄色大片| 欧美三级电影网站| 无码人妻精品一区二区50| 精品久久久视频| 日韩高清免费av| 亚洲一区二区三区精品在线| 欧美成人黄色网| 亚洲欧美日韩国产另类专区| 五月天激情丁香| 国产精品久久久久毛片软件| 国产视频不卡在线| 国产调教视频一区| 成人免费无遮挡无码黄漫视频| 91麻豆.com| 性久久久久久久久久| 波多野结衣中文字幕一区| 精品伦一区二区三区| 国产精品18久久久| 秋霞午夜鲁丝一区二区| 国产福利91精品| 中文字幕永久免费| 成人免费视频国产在线观看| 人妻 丝袜美腿 中文字幕| 国产91高潮流白浆在线麻豆 | 超碰成人免费在线| 一区久久精品| 黄页免费在线观看视频| 亚洲免费观看| 91av资源网| 日韩高清在线电影| 色啦啦av综合| 国产一区二区在线观看视频| 亚洲综合伊人久久| 国产.欧美.日韩| 无码精品一区二区三区在线播放| 久久中文字幕电影| 第一次破处视频| 中文字幕日韩精品一区| 久久老司机精品视频| 午夜久久久影院| 欧美成人一区二区三区四区| 欧美日韩中文字幕一区| 国产又黄又粗又硬| 精品国产精品网麻豆系列| 色av男人的天堂免费在线| 亚洲乱码av中文一区二区| 成人高清网站| 欧美日韩成人在线播放| 欧美激情20| 国产精品爽黄69| 一本色道69色精品综合久久| 好吊色欧美一区二区三区视频 | 亚洲免费av电影| 日本中文字幕在线看| 久久久久久国产精品三级玉女聊斋| 精品捆绑调教一区二区三区| 国产精品视频自在线| 成人h动漫精品一区二区器材| 欧美一区1区三区3区公司 | 亚洲日本va中文字幕| 久久99导航| 亚洲一区二区三区无吗| 美女日批免费视频| 久久99久国产精品黄毛片色诱| 怡红院一区二区| 国产精品美女www爽爽爽| 久久亚洲av午夜福利精品一区| 欧美日韩亚洲精品内裤| 国产精品毛片一区视频播| 亚洲精品理论电影| 丝袜美腿美女被狂躁在线观看| 久久久久久国产三级电影| h1515四虎成人| 国产成人av一区二区三区| 欧美亚洲在线日韩| 日韩视频在线视频| 狠狠久久亚洲欧美| 中国美女乱淫免费看视频| 一区二区三区**美女毛片| 最近中文在线观看| 亚洲精品电影网| 最新国产露脸在线观看| 国产精品99久久99久久久二8| 丁香一区二区| 欧美a级黄色大片| 免费人成精品欧美精品| 你懂的在线观看网站| 1区2区3区欧美| 四虎影院在线免费播放| 精品999久久久| 99在线视频观看| 久久久9色精品国产一区二区三区| 国产精品一二三在线观看| 日韩av一区二| 亚洲av无码成人精品国产 | 国产一级在线视频| 7777精品伊人久久久大香线蕉最新版| 精品视频一二三| 欧美亚洲伦理www| 久久1电影院| 成年人看的毛片| 国产精品综合网| 久久中文免费视频| 7878成人国产在线观看| 在线观看免费高清完整| 国产不卡视频在线| 在线观看欧美理论a影院| 成年人午夜视频在线观看| 国产999精品久久| 欧美激情一区二区视频| 日韩一区二区麻豆国产| 国产激情视频在线观看| 91精品啪aⅴ在线观看国产| 99久久久久国产精品| 亚洲精品久久久久久宅男| 日本一二三不卡| 中文字幕人成人乱码亚洲电影| 综合国产在线视频| 久久精品国产福利| 中文视频一区视频二区视频三区| 久久成人免费网站| 黄色录像免费观看| 91精品国产91热久久久做人人| 超碰在线网址| 91网免费观看| 黄色亚洲免费| 五月开心播播网| 一本一本大道香蕉久在线精品| 黄色美女网站在线观看| 国产精品专区一| 91成人国产| 亚洲熟妇一区二区| 亚洲国产精品一区二区www在线 | 成人在线综合网| 国产亚洲精品av| 精品国产免费人成在线观看| 中文不卡1区2区3区| 欧美色倩网站大全免费| 国产肉体xxxx裸体784大胆| 亚洲国产婷婷综合在线精品| 日韩中文字幕免费观看| 国产97在线|日韩| 色男人天堂综合再现| 波多野结衣网页| 午夜亚洲福利老司机| 青青青免费视频在线2| 国产精品人成电影| 综合久久久久| 亚洲中文字幕无码av| 欧美午夜片在线观看| 成人无遮挡免费网站视频在线观看| 99porn视频在线| 麻豆91精品| 欧美日韩色视频| 亚洲精品在线免费播放| 日韩欧美精品电影| 中文字幕一区二区三区四区五区人| 国产ts人妖一区二区| 中文字幕一区二区三区四区欧美| 上原亚衣av一区二区三区| 欧美日韩黄色| 日本精品一区二区三区四区| 中文字幕中文乱码欧美一区二区| 欧美视频xxx| 国产日韩精品视频| 亚洲少妇在线| 日韩激情综合网| 亚洲欧美日韩国产中文|