الفرق بين المراجعتين لصفحة: «React/forms»

من موسوعة حسوب
لا ملخص تعديل
لا ملخص تعديل
سطر 8: سطر 8:
   <input type="submit" value="تقديم البيانات" />
   <input type="submit" value="تقديم البيانات" />
</form>
</form>
</syntaxhighlight>يمتلك هذا الحقل نفس السّلوك الافتراضي لحقول HTML من حيث الانتقال إلى صفحة جديدة عندما يضغط المستخدم على زر تقديم البيانات (Submit)، وإن أردت فقط هذا السّلوك في React فسيعمل بشكل جيّد معك، ولكن في معظم الأحيان من الملائم أكثر أن نمتلك دالة في JavaScript تتعامل مع تقديم البيانات ولديها الوصول إلى البيانات التي أدخلها المستخدم في الحقل. الطريقة القياسيّة لتحقيق هذا الأمر هي باستخدام تقنيّة تدعى المُكوِّنات المُنضبِطَة (controlled components).
</syntaxhighlight>يمتلك هذا الحقل نفس السّلوك الافتراضي لحقول HTML من حيث الانتقال إلى صفحة جديدة عندما يضغط المستخدم على زر تقديم البيانات (Submit)، وإن أردت فقط هذا السّلوك في React فسيعمل بشكل جيّد معك، ولكن في معظم الأحيان من الملائم أكثر أن نمتلك دالة في JavaScript تتعامل مع تقديم البيانات ولديها الوصول إلى البيانات التي أدخلها المستخدم في الحقل. الطريقة القياسيّة لتحقيق هذا الأمر هي باستخدام تقنيّة تدعى المُكوِّنات المضبوطة (controlled components).
 
== المكونات المضبوطة ==
تُحافِظ عناصر الحقول في HTML مثل <code>[[HTML/input|<input>]]</code>، و <code>[[HTML/textarea|<textarea>]]</code>، و <code>[[HTML/select|<select>]]</code> على حالتها الخاصّة وتُحدِثها وفقًا لمُدخلات المستخدم. أمّا في React فيُحتفَظ بحالة قابلة للتعديل ضمن خاصيّة الحالة للمُكوِّنات وتُحدَّث فقط عن طريق التابع setState()‎.
 
بإمكاننا الجمع بينهما بأن نجعل حالة React المصدر الوحيد للحقيقة، فبذلك يصبح مكون React الذي يصير الحقل متحكما أيضا بما يحدث في ذلك الحقل مع تتالي مدخلات المستخدم. يدعى عنصر حقل الإدخال والذي تتحكم React بقيمته بالمكون المنضبط.
 
على سبيل المثال إن أردنا في المثال السابق أن نعرض الاسم بعد تقديمه فبإمكاننا كتابة الحقل كمكون منضبط:

مراجعة 12:01، 19 يوليو 2018

تعمل عناصر الحقول (forms) بشكلٍ مختلفٍ قليلًا عن بقيّة عناصر DOM الأخرى في React بسبب احتفاظ عناصر الحقول بشكل طبيعي بحالة داخلية خاصّة بها. فمثلًا يقبل هذا الحقل في HTML اسمًا واحدًا:

<form>
  <label>
    الاسم:
    <input type="text" name="name" />
  </label>
  <input type="submit" value="تقديم البيانات" />
</form>

يمتلك هذا الحقل نفس السّلوك الافتراضي لحقول HTML من حيث الانتقال إلى صفحة جديدة عندما يضغط المستخدم على زر تقديم البيانات (Submit)، وإن أردت فقط هذا السّلوك في React فسيعمل بشكل جيّد معك، ولكن في معظم الأحيان من الملائم أكثر أن نمتلك دالة في JavaScript تتعامل مع تقديم البيانات ولديها الوصول إلى البيانات التي أدخلها المستخدم في الحقل. الطريقة القياسيّة لتحقيق هذا الأمر هي باستخدام تقنيّة تدعى المُكوِّنات المضبوطة (controlled components).

المكونات المضبوطة

تُحافِظ عناصر الحقول في HTML مثل <input>، و <textarea>، و <select> على حالتها الخاصّة وتُحدِثها وفقًا لمُدخلات المستخدم. أمّا في React فيُحتفَظ بحالة قابلة للتعديل ضمن خاصيّة الحالة للمُكوِّنات وتُحدَّث فقط عن طريق التابع setState()‎.

بإمكاننا الجمع بينهما بأن نجعل حالة React المصدر الوحيد للحقيقة، فبذلك يصبح مكون React الذي يصير الحقل متحكما أيضا بما يحدث في ذلك الحقل مع تتالي مدخلات المستخدم. يدعى عنصر حقل الإدخال والذي تتحكم React بقيمته بالمكون المنضبط.

على سبيل المثال إن أردنا في المثال السابق أن نعرض الاسم بعد تقديمه فبإمكاننا كتابة الحقل كمكون منضبط: