المكونات المتحكم بها والحالة
أدر قيم حقول النماذج باستخدام نمط المكونات المتحكم بها في React للحصول على سلوك قابل للتنبؤ.
المكونات المتحكم بها والحالة درس مجاني في Next.js 15 Fullstack Web Apps على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Next.js 15 Fullstack Web Apps، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Next.js 15 Fullstack Web Apps 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Forms: User Interaction Hub
Forms are essential for almost any web application! They allow users to input information, make choices, and interact with your app.
Think about login screens, search bars, feedback forms, or even shopping cart quantity selectors – all rely on forms.
Uncontrolled Inputs: A Quick Look
In plain HTML, input elements manage their own state. When you type into an <input>, its value updates internally.
In React, these are called uncontrolled components. While simple for static forms, they can be tricky to integrate with React's dynamic UI updates and state management.
Meet Controlled Components
Controlled components are input elements whose values are controlled by React state. Instead of the DOM managing the input's value, your React component's state becomes the 'single source of truth'.
This gives you full control over the form data, making it predictable and easier to manage.
The Core: `value` & `onChange`
Two props are key to controlled components:
value: Sets the current displayed value of the input. It should always come from your component's state.onChange: A function that gets called whenever the input's value changes (e.g., user types). This function updates your component's state.
Controlled Text Input in Action
Let's see a basic controlled text input. We use useState to hold the input's value and update it with onChange.
Try typing in the input below:
import React, { useState } from 'react';
function App() {
const [name, setName] = useState('');
const handleChange = (event) => {
setName(event.target.value);
};
return (
<div>
<label>Your Name:</label>
<input
type="text"
value={name}
onChange={handleChange}
/>
<p>Hello, {name || 'stranger'}!</p>
</div>
);
}
State is the Single Source of Truth
Here's the flow for a controlled input:
- The input's
valueprop is set by React state (e.g.,name). - User types a character.
- The
onChangeevent fires, callinghandleChange. handleChangeupdates the state (setName).- React re-renders the component.
- The input's
valueprop is now updated with the new state, displaying the typed character.
Other Controlled Elements
The same value and onChange pattern applies to other form elements like <textarea> and <select>.
For <select>, the value prop is set on the <select> tag itself, not on individual <option> tags.
import React, { useState } from 'react';
function App() {
const [feedback, setFeedback] = useState('');
const [fruit, setFruit] = useState('apple');
return (
<div>
<label>Your Feedback:</label>
<textarea
value={feedback}
onChange={(e) => setFeedback(e.target.value)}
rows="3"
/>
<p>Feedback: {feedback}</p>
<label>Favorite Fruit:</label>
<select
value={fruit}
onChange={(e) => setFruit(e.target.value)}
>
<option value="apple">Apple</option>
<option value="banana">Banana</option>
<option value="orange">Orange</option>
</select>
<p>Selected: {fruit}</p>
</div>
);
}
Why Control Matters
Controlling your form inputs provides many benefits:
- Instant Validation: Validate input as the user types.
- Conditional Logic: Enable/disable buttons based on input state.
- Formatted Input: Automatically format phone numbers or currencies.
- Easy State Access: Always know the current value of any input.
- Predictable Behavior: Your UI always reflects your application's state.
Managing Many Inputs
For forms with multiple inputs, you can use a single state object and a generic onChange handler. The name attribute of the input helps identify which state property to update.
import React, { useState } from 'react';
function App() {
const [formData, setFormData] = useState({
username: '',
email: ''
});
const handleChange = (event) => {
const { name, value } = event.target;
setFormData(prevData => ({ ...prevData, [name]: value }));
};
return (
<form>
<label>Username:</label>
<input
type="text"
name="username"
value={formData.username}
onChange={handleChange}
/>
<label>Email:</label>
<input
type="email"
name="email"
value={formData.email}
onChange={handleChange}
/>
<p>User: {formData.username}, Email: {formData.email}</p>
</form>
);
}
Controlled Input Challenge
Which of the following are key characteristics of a controlled component in React?
Recap: Controlled & Predictable
You've learned about controlled components!
- They link input values directly to React state.
- They use the
valueprop for display and anonChangehandler to update state. - This pattern provides full control, enabling features like instant validation and predictable behavior.
- It applies to
<input>,<textarea>, and<select>elements.
Mastering controlled components is a crucial step for building robust forms in Next.js applications!
تعلم TypeScript مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 12
- الدروس
- 48
الأسئلة الشائعة
هل درس «المكونات المتحكم بها والحالة» مجاني؟
نعم — نص درس «المكونات المتحكم بها والحالة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Next.js 15 Fullstack Web Apps، انتقل إلى CoddyKit PRO. تتضمن دورة Next.js 15 Fullstack Web Apps 4 دروس في المجموع.
ماذا ستتعلم في «المكونات المتحكم بها والحالة»؟
أدر قيم حقول النماذج باستخدام نمط المكونات المتحكم بها في React للحصول على سلوك قابل للتنبؤ. تتمرن على Next.js 15 Fullstack Web Apps مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Next.js 15 Fullstack Web Apps؟
لا تُشترط خبرة سابقة. Next.js 15 Fullstack Web Apps على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «المكونات المتحكم بها والحالة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Next.js 15 Fullstack Web Apps هذا؟
نعم. كل درس في Next.js 15 Fullstack Web Apps يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المكونات المتحكم بها والحالة
- التحقق من صحة النماذج باستخدام React Hook Form
- نماذج Fullstack باستخدام إجراءات الخادم
- رفع الملفات ومعالجة النماذج متعددة الأجزاء