摘要:高階函數基本概念函數可以作為參數被傳遞函數可以作為返回值輸出平時遇到的應用場景中獲取成功數組中和高階組件高階組件就是接受一個組件作為參數并返回一個新組件的函數高階組件是一個函數,并不一個組件例子組件里面包含組件這里必須出去這是組件高階組件的
高階函數基本概念
1 函數可以作為參數被傳遞
setTimeout(()=>{ console.log("aaaa") },1000)
2 函數可以作為返回值輸出
function foo(x){ return function(){ return x } } //平時遇到的應用場景 //ajax中 $.get("/api/getTime",function(){ console.log("獲取成功") }) //數組中 some(), every(),filter(), map()和forEach()高階組件
1 高階組件就是接受一個組件作為參數并返回一個新組件的函數
2 高階組件是一個函數,并不一個組件
例子: A組件里面包含B組件
import React , { Component }from "react" function A(WrappedComponent){ return class A extends Component{ //這里必須retrun出去 render() { return(高階組件的應用這是A組件) } } } export default A
傳參數
import React, { Component } from "react"; import "./App.css"; import B from "./components/B" class App extends Component { render() { return (這是我的APP); } } export default App; //A組件 import React , { Component }from "react" export default (title)=> WrappedComponent => { return class A extends Component{ render() { return(這是A組件{title}) } } } //B組件 import React , { Component }from "react" import A from "./A.js" class B extends Component{ render() { return( 性別:{this.props.sex} 年齡:{this.props.age} 姓名:{this.props.name}) } } export default A("提示")(B) //有兩種方式引用高階函數,第一種入上 //第二種 import React , { Component }from "react" import a from "./A.js" @a("提示") class B extends Component{ render() { return(性別:{this.props.sex} 年齡:{this.props.age} 姓名:{this.props.name}) } } export default B
使用第二種方式的步驟
繼承方式高階組件的實現
//D.js import React from "react" const modifyPropsHOC= (WrappedComponent) => class NewComponent extends WrappedComponent{ render() { const element = super.render(); const newStyle = { color: element.type == "div"?"red":"green" } const newProps = {...this.props,style:newStyle} return React.cloneElement(element,newProps,element.props.children) } } export default modifyPropsHOC // E.js import React, {Component} from "react" import D from "./D" class E extends Component { render(){ return (我的div); } } export default D(E) // F.js import React, {Component} from "react" import d from "./D" class F extends Component { render(){ return (我的p
); } } export default d(F) import React, { Component } from "react"; import "./App.css"; import E from "./components/E" import F from "./components/F" class App extends Component { render() { return (這是我的APP); } } export default App;
修改生命周期
import React from "react" const modifyPropsHOC= (WrappedComponent) => class NewComponent extends WrappedComponent{ componentWillMount(){ alert("我的修改后的生命周期"); } render() { const element = super.render(); const newStyle = { color: element.type == "div"?"red":"green" } const newProps = {...this.props,style:newStyle} return React.cloneElement(element,newProps,element.props.children) } } export default modifyPropsHOC
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103680.html
摘要:創建一個普通函數因為的存在所以變成構造函數創建一個方法在方法中,創建一個中間實例對中間實例經過邏輯處理之后返回使用方法創建實例而恰好,高階組件的創建邏輯與使用,與這里的方法完全一致。因為方法其實就是構造函數的高階組件。 很多人寫文章喜歡把問題復雜化,因此當我學習高階組件的時候,查閱到的很多文章都給人一種高階組件高深莫測的感覺。但是事實上卻未必。 有一個詞叫做封裝。相信寫代碼這么久了,大...
摘要:博客地址背景知識在開始講述高階組件前,我們先來回顧高階函數的定義接收函數作為輸入,或者輸出另一個函數的一類函數,被稱作高階函數。 博客地址:http://www.luckyjing.com/post... 背景知識 在開始講述高階組件前,我們先來回顧高階函數的定義:接收函數作為輸入,或者輸出另一個函數的一類函數,被稱作高階函數。對于高階組件,它描述的便是接受React組件作為輸入,輸出...
摘要:之所以稱之為高階,是因為在中,這種嵌套關系會反映到組件樹上,層層嵌套就好像高階函數的一樣,如圖從圖上也可以看出,組件樹雖然嵌套了多層,但是實際渲染的結構并沒有改變。你可能已經注意到,目前我寫的所有高階函數,都是形如表示為。 什么是高階組件 Higher-Order Components (HOCs) are JavaScript functions which add function...
摘要:為了代碼進一步解耦,可以考慮使用高階組件這種模式。開源的高階組件使用提供了一系列使用的高階組件,可以增強組件的行為,可以利用此庫學習高階組件的寫法。通過使用此庫提供的高階組件,可以方便地讓列表元素可拖動。 1. Decorator基本知識 在很多框架和庫中看到它的身影,尤其是React和Redux,還有mobx中,那什么是裝飾器呢。 修飾器(Decorator)是一個函數,用來修改類的...
閱讀 3859·2023-04-26 00:36
閱讀 2667·2021-11-16 11:44
閱讀 1082·2021-11-15 17:58
閱讀 1665·2021-09-30 09:47
閱讀 1208·2019-08-30 13:05
閱讀 1539·2019-08-30 12:55
閱讀 2409·2019-08-30 11:02
閱讀 2718·2019-08-29 17:01