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

react高階組件添加和刪除props

 更新時間:2019年04月26日 10:02:38   作者:supportlss  
這篇文章主要介紹了react高階組件添加和刪除props,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

嘮叨幾句啦

在看程墨老師的深入淺出高階組件,開頭一點提了一個需要,創(chuàng)建兩個高階組件,一個能給傳入的元素自定義添加props,一個是刪除特定的props。我剛剛做了一下,發(fā)現(xiàn)高階組件需要區(qū)分好傳入的是class還是react element, 同時也需要注意好return回去的是啥。順便提一下高階組件的概念,就說一個函數(shù),能夠接受一個組件作為參數(shù),然后返回的時候,這個組件就帶有這個高階組件給的某些特性。我理解就跟掉泥坑了,得帶點土出來一個道理。

對比一下兩個組件,貼代碼時刻來啦

刪除屬性的高階組件

我們需要傳入任何組件和參數(shù),都把user參數(shù)給刪除了,所以返回值是一個接收props屬性的函數(shù)。

import React from "react"

function removeUserProp(WrappedComponent) {
  return function newRender(props) {
    const {user, ...otherProps} = props;// 刪除user這個屬性值
    return <WrappedComponent {...otherProps} />
  }
}

export default removeUserProp

使用的時候

 const RemoveComponent = removeUserProp(reactComponentClass)({user: "aa"});// 這里返回的是一個react component
 render () {
  return <div>
        {RemoveComponent}
      </div>
 }

增加屬性的高階組件

import React from "react"

const addNewProps = function (WrappedComponent, newProps) {// 接收的是一個class作為參數(shù),返回一個class
  return class WrappingComponent extends React.Component {
    render () {
      return <WrappedComponent {...this.props} {...newProps}/>
    } 
  }
}

export default addNewProps

使用的時候,返回值是class,所以要用<ReactClassName/>轉(zhuǎn)換成可以渲染的react組件

  const AddUserComponent = addNewProps(SampleComponent, {user: "aa"})
  render () {
    return <AddUserComponent />
  }

完整的使用的例子代碼:

import React from "react"
import addNewProps from './addNewProps'
import removeUserProp from './removeUserProp'

class SampleComponent extends React.Component {

  constructor(props) {
    console.log(props)
    super(props)
  }

  render () {
    console.log(this.props)
    return <div>
        {
         this.props.user ? <p>哈哈哈</p> : <p>哈哈哈2</p>
        }   
        </div>
  }
}


class Test extends React.Component {

  render () {
    var obj = {aa: "aa"}
    const AddUserComponent = addNewProps(SampleComponent, {user: "aa"})
    const RemoveUserComponent = removeUserProp(SampleComponent)({user: "aa"})
   
    return <div>
         <AddUserComponent />
         {RemoveUserComponent}
        </div>
    
  }
}

export default Test

一點點小收獲就是明白了高階組件要看清楚輸入輸出。class跟react element的區(qū)別。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 從頭寫React-like框架的工程搭建實現(xiàn)

    從頭寫React-like框架的工程搭建實現(xiàn)

    這篇文章主要介紹了從頭寫React-like框架的工程搭建實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • React在組件中如何監(jiān)聽redux中state狀態(tài)的改變

    React在組件中如何監(jiān)聽redux中state狀態(tài)的改變

    這篇文章主要介紹了React在組件中如何監(jiān)聽redux中state狀態(tài)的改變,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React中使用async validator進(jìn)行表單驗證的實例代碼

    React中使用async validator進(jìn)行表單驗證的實例代碼

    react上進(jìn)行表單驗證是很繁瑣的,在這里使用async-validator處理起來就變的很方便了,接下來通過本文給大家介紹React中使用async validator進(jìn)行表單驗證的方法,需要的朋友可以參考下
    2018-08-08
  • React狀態(tài)管理Redux原理與介紹

    React狀態(tài)管理Redux原理與介紹

    redux是redux官方react綁定庫,能夠使react組件從redux store中讀取數(shù)據(jù),并且向store分發(fā)actions以此來更新數(shù)據(jù),這篇文章主要介紹了react-redux的設(shè)置,需要的朋友可以參考下
    2022-08-08
  • React中的函數(shù)式插槽詳解

    React中的函數(shù)式插槽詳解

    這篇文章主要為大家詳細(xì)介紹了React?開發(fā)中遇到的具名插槽的函數(shù)用法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,有興趣的小伙伴可以了解一下
    2023-11-11
  • React18中的useDeferredValue示例詳解

    React18中的useDeferredValue示例詳解

    這篇文章主要介紹了React18中的useDeferredValue的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • React forwardRef的使用方法及注意點

    React forwardRef的使用方法及注意點

    React.forwardRef的API中ref必須指向dom元素而不是React組件,通過一段示例代碼給大家介紹了React forwardRef使用方法及注意點還有一些特殊情況分析,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • React中多語言的配置方式

    React中多語言的配置方式

    這篇文章主要介紹了React中多語言的配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • react16.8.0以上MobX在hook中的使用方法詳解

    react16.8.0以上MobX在hook中的使用方法詳解

    這篇文章主要為大家介紹了react16.8.0以上MobX在hook中的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • redux的原理、工作流程及其應(yīng)用方式

    redux的原理、工作流程及其應(yīng)用方式

    這篇文章主要介紹了redux的原理、工作流程及其應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論

南丰县| 桃江县| 青阳县| 嘉禾县| 铁力市| 台北市| 大余县| 梁河县| 铜梁县| 孝义市| 清原| 西充县| 连州市| 江阴市| 平阳县| 新绛县| 辽宁省| 龙游县| 忻州市| 普兰县| 泸溪县| 宁国市| 昌吉市| 禄丰县| 四会市| 新余市| 盘山县| 吉水县| 延安市| 益阳市| 晋城| 桃园市| 孟津县| 抚远县| 兴仁县| 万载县| 察隅县| 虎林市| 夹江县| 皮山县| 文登市|