खोज…


परिचय

उच्च आदेश घटक (संक्षेप में "एचओसी") एक प्रतिक्रिया एप्लिकेशन डिज़ाइन पैटर्न है जिसका उपयोग पुन: प्रयोज्य कोड के साथ घटकों को बढ़ाने के लिए किया जाता है। वे मौजूदा घटक कक्षाओं में कार्यक्षमता और व्यवहार को जोड़ने में सक्षम हैं।

HOC एक शुद्ध जावास्क्रिप्ट फ़ंक्शन है जो एक घटक को स्वीकार करता है क्योंकि यह तर्क है और विस्तारित कार्यक्षमता के साथ एक नया घटक देता है।

टिप्पणियों

HOCs का उपयोग अक्सर थर्ड पार्टी लाइब्रेरी में किया जाता है। जैसे Redux कनेक्ट फंक्शन।

सरल उच्च आदेश घटक

मान लीजिए कि हम हर बार कंपोनेंट को माउंट करने के लिए कंसोल करना चाहते हैं:

hocLogger.js

export default function hocLogger(Component) {
  return class extends React.Component {
    componentDidMount() {
      console.log('Hey, we are mounted!');
    }
    render() {
      return <Component {...this.props} />;
    }
  }
}

अपने कोड में इस HOC का उपयोग करें:

MyLoggedComponent.js

import React from "react";
import {hocLogger} from "./hocLogger";

export class MyLoggedComponent extends React.Component {
    render() {
        return (
            <div>
                This component get's logged to console on each mount.
            </div>
        );
    }
}

// Now wrap MyLoggedComponent with the hocLogger function 
export default hocLogger(MyLoggedComponent);

उच्च आदेश घटक जो प्रमाणीकरण के लिए जाँच करता है

मान लें कि हमारे पास एक घटक है जो केवल तभी प्रदर्शित होना चाहिए जब उपयोगकर्ता लॉग इन हो।

इसलिए हम एक HOC बनाते हैं जो प्रत्येक रेंडर पर प्रमाणीकरण के लिए जाँच करता है ():

AuthenticatedComponent.js

import React from "react";

export function requireAuthentication(Component) {
    return class AuthenticatedComponent extends React.Component {

        /**
         * Check if the user is authenticated, this.props.isAuthenticated
         * has to be set from your application logic (or use react-redux to retrieve it from global state).
         */
        isAuthenticated() {
            return this.props.isAuthenticated;
        }

        /**
         * Render
         */
        render() {
            const loginErrorMessage = (
                <div>
                    Please <a href="/login">login</a> in order to view this part of the application.
                </div>
            );

            return (
                <div>
                    { this.isAuthenticated === true ? <Component {...this.props} /> : loginErrorMessage }
                </div>
            );
        }
    };
}

export default requireAuthentication;

हम तो अपने घटकों में इस उच्च आदेश घटक का उपयोग करते हैं जो अनाम उपयोगकर्ताओं से छिपा होना चाहिए:

MyPrivateComponent.js

import React from "react";
import {requireAuthentication} from "./AuthenticatedComponent";

export class MyPrivateComponent extends React.Component {
    /**
     * Render
     */
    render() {
        return (
            <div>
                My secret search, that is only viewable by authenticated users.
            </div>
        );
    }
}

// Now wrap MyPrivateComponent with the requireAuthentication function 
export default requireAuthentication(MyPrivateComponent);

इस उदाहरण को यहां और अधिक विस्तार से वर्णित किया गया है



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow