最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React組件對子組件children進(jìn)行加強(qiáng)的方法

 更新時間:2019年06月23日 10:39:05   作者:tornoda  
這篇文章主要給大家介紹了關(guān)于React組件中對子組件children進(jìn)行加強(qiáng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用React具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

問題

如何對組件的children進(jìn)行加強(qiáng),如:添加屬性、綁定事件,而不是使用<div>{this.props.children}</div>在<div>上進(jìn)行處理。

前車之鑒

今天寫組件遇到這個問題,在網(wǎng)上查閱了很多資料,都說可以使用React.cloneElement進(jìn)行處理,但是結(jié)果并不是預(yù)期想要的。

先看看這個東西有什么用:

React.cloneElement(element, [props], [...childrn])

根據(jù)React官網(wǎng)的說法,以上代碼等價于:

<element.type {...element.props} {...props}>{children}</element.type>

這么做其實(shí)也是給children包了一層標(biāo)簽,再對其進(jìn)行間接處理,沒有直接修改children。

如:

// App.jsx
<Father>
 <div style={{ color: 'red' }} onClick={() => console.log('hello')}>
  demo
 </div>
<Father>

我們希望在Father.jsx的內(nèi)部將div轉(zhuǎn)為inline-block。按照網(wǎng)上的做法,是這樣的:

// Father.jsx
const Son = React.cloneElement(
 this.props.children,
 {
  style: {
   display: 'inline-block'
  }
 }
)

但是實(shí)際效果是這樣的:

<div style={{ dispaly: 'inline-block' }}>
 <div style={{ color: 'red' }} onClick={() => console.log('hello')}>
  demo
 </div>
<div>

哈?。孔釉氐母冈乇辉O(shè)為了inline-block,和我們想要的<div>demo</div>被設(shè)為inline-block。結(jié)果與預(yù)期完全不同,簡直大失所望!??!

React.clone根本對不起它c(diǎn)lone的名字?。?!

自我探索

思路: jsx語法表示的元素只是react組件的一個語法糖。所以組件是對象。既然是對象我們就可以直接對其進(jìn)行修改。

嘗試在控制臺打印一個如下react組件:

// this.props.children
console.log(
 <div
  style={{ color: 'red' }}
  onClick={() => {
   console.log('hello');
  }}
 >
  demo
 </div>
);

如下:

所以直接修改this.props.children即可:

// Father.jsx
const { children } = this.props;
const Son = {
 ...children,
 props: {
   ...children.props,
  dispaly: {
   ...children.style,
   display: 'inline-block'
  },
  onTransitionEnd: () => { console.log('hello world') }
 }
}

總結(jié)

如何對組件的children進(jìn)行直接加強(qiáng),直接修改this.props.children對象即可。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 如何對react hooks進(jìn)行單元測試的方法

    如何對react hooks進(jìn)行單元測試的方法

    這篇文章主要介紹了如何對react hooks進(jìn)行單元測試的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • react中使用css的7中方式(最全總結(jié))

    react中使用css的7中方式(最全總結(jié))

    這篇文章主要介紹了react中使用css的7中方式(最全總結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • React如何實(shí)現(xiàn)視頻旋轉(zhuǎn)縮放

    React如何實(shí)現(xiàn)視頻旋轉(zhuǎn)縮放

    這篇文章主要為大家詳細(xì)介紹了React如何實(shí)現(xiàn)視頻旋轉(zhuǎn)縮放功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • React Native使用Modal自定義分享界面的示例代碼

    React Native使用Modal自定義分享界面的示例代碼

    本篇文章主要介紹了React Native使用Modal自定義分享界面的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 在React項目中使用TypeScript詳情

    在React項目中使用TypeScript詳情

    這篇文章主要介紹了在React項目中使用TypeScript詳情,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 解決React初始化加載組件會渲染兩次的問題

    解決React初始化加載組件會渲染兩次的問題

    這篇文章主要介紹了解決React初始化加載組件會渲染兩次的問題,文中有出現(xiàn)這種現(xiàn)象的原因及解決方法,感興趣的同學(xué)跟著小編一起來看看吧
    2023-08-08
  • React將組件作為參數(shù)進(jìn)行傳遞的3種方法實(shí)例

    React將組件作為參數(shù)進(jìn)行傳遞的3種方法實(shí)例

    其實(shí)react組件之間傳遞參數(shù)是比較簡單的,組件傳入?yún)?shù)的一種方式,下面這篇文章主要給大家介紹了關(guān)于React將組件作為參數(shù)進(jìn)行傳遞的3種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • React 腳手架使用指南(最新推薦)

    React 腳手架使用指南(最新推薦)

    本文介紹了React腳手架(CreateReactApp)的使用指南,包括創(chuàng)建項目、項目結(jié)構(gòu)、常用命令、最佳實(shí)踐、常見問題解決以及腳手架的優(yōu)勢,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • react-navigation 如何判斷用戶是否登錄跳轉(zhuǎn)到登錄頁的方法

    react-navigation 如何判斷用戶是否登錄跳轉(zhuǎn)到登錄頁的方法

    本篇文章主要介紹了react-navigation 如何判斷用戶是否登錄跳轉(zhuǎn)到登錄頁的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 淺談React中組件間抽象

    淺談React中組件間抽象

    這篇文章主要介紹了淺談React中組件間抽象,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

凤凰县| 崇义县| 曲靖市| 泸水县| 确山县| 三亚市| 长沙市| 岚皋县| 沛县| 安丘市| 姜堰市| 教育| 淄博市| 辰溪县| 黄梅县| 平和县| 靖江市| 左云县| 静乐县| 兴化市| 年辖:市辖区| 惠东县| 兰溪市| 灵台县| 株洲市| 廊坊市| 平罗县| 保定市| 东安县| 佛教| 鹤壁市| 楚雄市| 秦皇岛市| 淮安市| 卢氏县| 厦门市| 浠水县| 娄烦县| 方城县| 古蔺县| 浑源县|