קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ כללי ♦ מדריך ריאקט – react hooks | useContext

מדריך ריאקט – react hooks | useContext

וינר יאיר 12 בספטמבר 2021 אין תגובות

אחד הדברים השימושיים באפליקציות ריאקט ובכלל, הוא global state management, שהוא למעשה האובייקט הלוקלי של האפליקציה שלכם שמחזיק בתוכו את המידע של היואיי , ואחד היותר שימושיים בריאקט הוא react context . אז כמובן , ריאקט השמישו HOOK מתאים , שהינו useContext.

אז מה זה useContext ? \ react Context

ריאקט יישמו מנגנון של global state management בטכנולוגיה שלהם, ישנם אפשרויות שונות ל GSM כמו Redux שהינו מאד פופולארי . מה שמאפשר לכם להנל מידע מעל כל הריכיבים ולתקשר בעזרת המידע בין כולם. למשל תרצו שרכיב אחד ידע לקבל מידע ואם מידע זה משתנה מחוץ לרכיב למשל ברכיב אחר לגמרי, עדיין תרצו שאותו רכיב או כל רכיב אחד שעושה שימוש באותו המידע , יתעדכן בהתאם למידע הגלובלי.

להלן תרשים להמחשה:

איך משתשמשים ב useContext ?

להלן דוגמה והסבר בהמשך,

import React, { createContext, ReactElement, useState ,useEffect } from 'react'


export const Context = createContext();

export function ContextProvider({ children }) {
    const [gameStatus, startGame] = useState(false);
    return (
        <Context.Provider value={{gameStatus, startTheGame: startGame}}>
            {children}
        </Context.Provider>
    )
}
import React, { ReactElement, useContext } from 'react';
import logo from './logo.svg';
import './App.css';
import ButtonClicked from './buttonClicked';
import { Context } from './context';

function App(props: any): ReactElement<any> {
  
  const {startTheGame} = useContext(Context);

  return (
    
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <ButtonClicked />
          <button onClick={()=>startTheGame(true)}>Start the Game</button>
        </header>
      </div>
  );
}

export default App;
import React, { useContext, useEffect, useState } from 'react'
import { Context } from './context';

export default function ButtonClicked() {
   
    const [totalCrocs, addCrocs] = useState(0);
    const {gameStatus} = useContext(Context);

    useEffect(() => {
      
    },[totalCrocs]);

    useEffect(() => {
        
        return () =>{
            addCrocs(4)
          }
      }, []);
    return (
        <div>
            <p>
          {totalCrocs}
        </p>
        <button disabled={!gameStatus} onClick={()=>addCrocs(totalCrocs+1)}>
          click me
        </button>
        </div>
    )
}
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { ContextProvider } from './context';

ReactDOM.render(

  <React.StrictMode>
  <ContextProvider> <App /> </ContextProvider>
  </React.StrictMode>,
  document.getElementById('root')
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

הרבה קבצים , אבל זה מאד פשוט ככה,

  • למעשה יש לנו קובץ (הקובץ הראשון) שמטפל ב createContext שממנו נשאב את הcontext בעזרת useContext .
  • משמה נמשיך לindex.tsx ונעטוף את כל APP בcontext שיצרו , כן שזה מאפשר לנו להשתמש בתוך app בuseContext.
  • APP עושה את השימוש שמעדכן את את המידע בעזרת הפונקציה startTheGame
  • והרכיב שגם מאזין גם כן ל context , למשתנה gameStatus.

הערה חשובה,

לרוב תראו שעוטפים בתוך APP עם provider אבל אז לא תוכלו לעשות שימוש בuseContext בAPP. ולכן עטפנו עם provider בקובץ אינדקס. יש אפשרות לעטוף חלקים מהאפליקציה כמובן אבל זה כבר הסבר יותר מעמיק בפוסט אחר על שימוש ב context.

סיכום פוסט useContext

כפי שאתם רואים זה הוק יותר מורכב ואפילו ספציפי , לא תמיד תשתמשו בGSM ולא תמיד תבחרו את context של react . אבל כמובן שמפתחי ריאקט ירצו לתת פתרון נוח לטכנולוגיות שלהם. בהמשך נדבר על useReducer שגם עוזר לנו לעדכן מידע בצורה קצת יותר מתוחכמת.

פוסטים קשורים:

מדריך ריאקט שיעור useEffectמדריך ריאקט – react hooks | useEffect מדריך ריאקט useState hookמדריך ריאקט – react hooks | useState מדריך ריאקט – classes, functional component & hooks מדריך react | ריאקט | איך מעבירים מידע בין קומפננטות באמצעות propsמדריך react | ריאקט | איך מעבירים מידע בין קומפננטות באמצעות props
react hooks לימוד ריאקט מדריך חינם react מדריך ריאקט קורס ריאקט

אודות המחבר

יאיר וינר להציג את כל הפוסטים של וינר יאיר


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד
דילוג לתוכן
פתח סרגל נגישות כלי נגישות

כלי נגישות

  • הגדל טקסטהגדל טקסט
  • הקטן טקסטהקטן טקסט
  • גווני אפורגווני אפור
  • ניגודיות גבוההניגודיות גבוהה
  • ניגודיות הפוכהניגודיות הפוכה
  • רקע בהיררקע בהיר
  • הדגשת קישוריםהדגשת קישורים
  • פונט קריאפונט קריא
  • איפוס איפוס