React(7.2)--React ES6 處理 mixin

來源:互聯網
上載者:User
前言:

由於 mixin 有悖 JavaScript 語義化,React ES6 使用高階組件替代 Mixins。

這一節,我們將主要討論如何使用 高階組件 的方式取代傳統的 React Mixins。 那個我們怎麼使用 ES6 處理 mixin?


什麼是 高階組件 ?

通過函數向現有組件類添加邏輯,就是高階組件。

高階組件實際上只是一個方法,這個方法利用一個現有組件去返回另一個封裝它的組件。 我們看一下 React ES6 是如何? mixin 的

import React from 'react';//1、引入 HighterComponet 方法import {HighterComponet} from './HighterComponet';class Example extends React.Component {    //...略...}//2、export 高階組件封裝增強後的Exampleexport default HighterComponet(Example);

解析:我們把一些通用的邏輯處理放到 HighterComponet 方法中,而 Example 組件需要用到其中的邏輯處理。經過上面的處理後,export 出來的 Example 組件就包含了 HighterComponet 的邏輯處理,Example 就變成了一個高階組件(高階函數-回呼函數)。

然後我們再來看一下 HighterComponet 的內容:

import { Component } from "React" ;export const HighterComponet = (ComposedComponent) => class extends Component {    constructor() {        this.state = { data: null };    }    componentDidMount() {        this.setState({ data: 'Hello' });    }    render() {        return <ComposedComponent {...this.props} data={this.state.data} />;    }};

HighterComponet 就是一個方法,他的參數的一個組件。當傳入一個 Component 的時候,它將自動為該 Component 進行擴充並返回新的類定義。

上例中,就返回了一個擴充的 Component 類,為建構函式中添加了 state,也在 React 生命週期函數 componentDidMount中添加了處理邏輯,而 render 方法則使用了傳入的參數,完成了渲染。


我們再回頭看一下 Example 組件:

import  { Component }  from "React";import { HighterComponet } from "./HighterComponet ";class Example = class extends Component {      render() {          if (!this.props.data) return <div>Waiting...</div>;          return <div>{this.data}</div>;      }}export default HighterComponet (Example ); 

Example 僅僅知道別人會把資料通過 this.prop.data 傳進來,其他就都不關心了。可以看到,和 Mixins 的擴充方式相比,Example 的工作要輕鬆很多。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.