<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          七個JSX在render函數(shù)中的常見應(yīng)用

          共 1479字,需瀏覽 3分鐘

           ·

          2020-10-23 18:01


          一.JSX簡介

          1. const element =

            Hello, world!h1>;

          JSX 可以很好地描述 UI 應(yīng)該呈現(xiàn)出它應(yīng)有交互的本質(zhì)形式。JSX 可能會使人聯(lián)想到模版語言,但它具有 JavaScript 的全部功能。

          Babel 會把 JSX 轉(zhuǎn)譯成一個名為 React.createElement() 函數(shù)調(diào)用。以下兩種示例代碼完全等效:

          1. const element = (

          2. <h1 className="greeting">

          3. Hello, world!

          4. h1>

          5. );

          1. const element = React.createElement(

          2. 'h1',

          3. {className: 'greeting'},

          4. 'Hello, world!'

          5. );

          React.createElement() 會預(yù)先執(zhí)行一些檢查,以幫助你編寫無錯代碼,但實際上它創(chuàng)建了一個這樣的對象:

          1. const element = {

          2. type: 'h1',

          3. props: {

          4. className: 'greeting',

          5. children: 'Hello, world!'

          6. }

          7. };

          二.模板缺陷

          模板的最大特點是擴(kuò)展難度大,不易擴(kuò)展。可能會造成邏輯冗余:

          1. :type="1">哈哈

          2. :type="2">哈哈

          3. :type="3">哈哈

          Level組件需要對不同的type產(chǎn)生不同的標(biāo)簽

          三.函數(shù)式組件

          函數(shù)式組件沒有模板,只允許提供render函數(shù)

          1. export default {

          2. render(h) {

          3. return h("h" + this.type, {}, this.$slots.default);

          4. },

          5. props: {

          6. type: {

          7. type: Number

          8. }

          9. }

          10. };

          復(fù)雜的邏輯變得非常簡單

          四.JSX應(yīng)用

          使用jsx會讓代碼看起來更加簡潔、易于讀取

          1. export default {

          2. render(h) {

          3. const tag = "h" + this.type;

          4. return <tag>{this.$slots.default}tag>;

          5. },

          6. props: {

          7. type: {

          8. type: Number

          9. }

          10. }

          11. };

          五.render方法定制組件

          編寫List組件,可以根據(jù)用戶傳入的數(shù)據(jù)自動循環(huán)列表

          1. :data="data">


          通過render方法來定制組件,在父組件中傳入render方法

          1. :data="data" :render="render">

          2. render(h, name) {

          3. return {name};

          4. }

          我們需要createElement方法,就會想到可以編寫個函數(shù)組件,將createElement方法傳遞出來

          ListItem.vue調(diào)用最外層的render方法,將createElement和當(dāng)前項傳遞出來

          六.scope-slot

          使用v-slot 將內(nèi)部值傳入即可

          1. :arr="arr">

          2. v-slot="{item}">

          3. {{item}}


          4. v-for="(item,key) in arr" :key="key">

          5. :item="item">

          七.編寫可編輯表格

          基于iview使用jsx擴(kuò)展成可編輯的表格

          最后



          如果你覺得這篇內(nèi)容對你挺有啟發(fā),我想邀請你幫我三個小忙:

          1. 點個「在看」,讓更多的人也能看到這篇內(nèi)容(喜歡不點在看,都是耍流氓 -_-)

          2. 歡迎加我微信「qianyu443033099」拉你進(jìn)技術(shù)群,長期交流學(xué)習(xí)...

          3. 關(guān)注公眾號「前端下午茶」,持續(xù)為你推送精選好文,也可以加我為好友,隨時聊騷。


          點個在看支持我吧,轉(zhuǎn)發(fā)就更好了

          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美性猛交XXXXX水多 | 东方AV在线一 | www伊人 | 欧美成人性爱网址 | 最新啪啪网站 |