📘 מדריך React ומבוא לתכנות
הצעד הראשון שלכם בעולם הפיתוח מתחיל כאן. למידה מובנית מבית More-ways.

useRef
מה זה useRef?
useRef מחזיר אובייקט עם שדה current שניתן לשנותו מבלי לגרום לרינדור. משמש ל:
- גישה לאלמנטים ב-DOM (למשל פוקוס לקלט).
- שמירה על ערכים מתמשכים בין רינדורים (טיימרים, מונים, previous value).
- דילוג על הריצה הראשונה של אפקטים/הבחנה בין mount ל-update.
תוכן עניינים
1) ref ל-DOM
דוגמה: פוקוס אוטומטי על שדה קלט בעת mount.
const inputRef = useRef(null);
useEffect(() => {
inputRef.current?.focus();
}, []);
return <input ref={inputRef} />;דוגמה חיה
2) ערכים מתמשכים ללא רינדור
שינוי ref.current לא מפעיל רינדור, לכן מתאים לטיימרים, מונים פנימיים או שמירה על אובייקטים בין רינדורים.
const ref = useRef(0);
ref.current += 1; // לא יגרום לרינדורדוגמה חיה
ערך בתוך useRef אינו מפעיל רינדור; טוב לשמירת ספירות, מזהים וטיימרים.
3) Previous Value עם useRef
שומרים את הערך הקודם בכל שינוי, ללא רינדור נוסף.
const [value, setValue] = useState(0);
const prevRef = useRef(value);
useEffect(() => { prevRef.current = value; }, [value]);דוגמה חיה
4) מדידת אלמנט DOM
מתאים למדידות, מיקומים ו־layout.
const boxRef = useRef(null);
const [rect, setRect] = useState({});
useEffect(() => {
const el = boxRef.current;
if (!el) return;
const update = () => setRect(el.getBoundingClientRect());
update();
const ro = new ResizeObserver(update);
ro.observe(el);
return () => ro.disconnect();
}, []);דוגמה חיה
5) ניהול אינטרוולים עם ref
שומרים את מזהה האינטרוול ב־ref כדי לעצור/להפעיל ולהימנע מהחזקה ב־state.
const idRef = useRef(null);
const start = () => {
if (idRef.current) return;
idRef.current = setInterval(doSomething, 1000);
};
const stop = () => {
clearInterval(idRef.current);
idRef.current = null;
};דוגמה חיה
6) UseRefBasics — הקוד שלך (עם הערות)
import { useEffect, useRef, useState } from 'react';
const UseRefBasics = () => {
const [value, setValue] = useState(0);
const refContainer = useRef(null);
const isMounted = useRef(false);
const handleSubmit = (e) => {
e.preventDefault();
console.log(refContainer.current); // מצביע לקלט
const name = refContainer.current.value; // קריאת ערך מה- input
console.log(name);
};
useEffect(() => {
// הפוקוס על הקלט בעת mount
refContainer.current.focus();
}, []);
useEffect(() => {
// דילוג על הריצה הראשונה
if (!isMounted.current) {
isMounted.current = true;
return;
}
console.log('re-render'); // ירוץ רק בעדכונים
}, [value]);
return (
<div>
<form className='form' onSubmit={handleSubmit}>
<div className='form-row'>
<label htmlFor='name' className='form-label'>Name</label>
<input type='text' id='name' ref={refContainer} className='form-input' />
</div>
<button type='submit' className='btn btn-block'>submit</button>
</form>
<h1>value : {value}</h1>
<button onClick={() => setValue(value + 1)} className='btn'>increase</button>
</div>
);
};
export default UseRefBasics;7) טיפים ודגשים
- שינוי
ref.currentלא מרנדר — טוב לשמירת מידע צדדי (טיימרים, previous value, דגלים). - אל תכתבו ל־
ref.currentבתוך הרינדור אם הערך משפיע על ה־UI; בשביל זה ישstate. - לשילוב עם
useEffect: ניתן לשמור דגלים כמוisMounted.currentכדי לדלג על הריצה הראשונה. - במדידות DOM העדיפו
ResizeObserverעל מאזיניresizeגלובליים.
8) SEO: קישורים חיצוניים (Best Practices)
- השתמשו בעוגן עם טקסט תיאורי (Anchor Text) שמסביר מה יש בקישור — זה עוזר למנועי חיפוש ולהנגשה.
- ליעד חיצוני פתחו בטאב חדש באמצעות
target="_blank"+ הוסיפוrel="noopener noreferrer"לבטיחות. - אם הקישור ממותג/רשמי, הזכירו את שם המקור (MDN/React Docs) בטקסט.
// דוגמת קישורים חיצוניים ידידותיים ל-SEO:
<p>
קראו את
{' '}
<a
href="https://react.dev/reference/react/useRef"
target="_blank"
rel="noopener noreferrer"
>
התיעוד הרשמי של React על useRef
</a>
{' '}וגם את
{' '}
<a
href="https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver"
target="_blank"
rel="noopener noreferrer"
>
מדריך MDN על ResizeObserver
</a>
.
</p>🚀 סיכום
useRef הוא כלי גמיש לשמירת מצביעי DOM וערכים מתמשכים ללא רינדור. השתמש בו למדידות, פוקוס, טיימרים ולשליטה במחזור-חיים יחד עם useEffect.
למה ללמוד תכנות וסייבר ב-More-ways?
עולם הטכנולוגיה משתנה במהירות, והיום כבר לא מספיק רק לדעת לכתוב קוד. ב-More-ways אנחנו מאמינים בשילוב קריטי בין פיתוח Full-Stack, הבנת ארכיטקטורת רשתות, ושימוש מתקדם ב-בינה מלאכותית (AI). המדריך שלפניכם הוא רק טעימה מהידע המקצועי שאנו מעבירים בקורסים שלנו, הכוללים ליווי אישי, פרויקטים מעשיים והכנה לשוק העבודה המודרני.
האם אפשר ללמוד תכנות ללא ניסיון?
בוודאי. המסלולים שלנו ב-More-ways מונגשים גם למתחילים, עם דגש על חשיבה לוגית ובניית בסיס איתן לפני הצלילה לקוד המורכב.
איך AI משתלב בלימודי הייטק?
אנחנו מלמדים אתכם להשתמש בכלי AI כדי להאיץ את הפיתוח, לדבג קוד ביעילות ולבנות אפליקציות חכמות יותר בזמן קצר יותר.
מוכנים לקחת את הקריירה לשלב הבא?
מעבר לאתר More-ways הרשמי