اذهب إلى المحتوى

السؤال

نشر

أحاول أن أقوم بعمل صندوق لكتابة تعليق في مشروع React وقمت بكتابة الكود التالي:

import React, { useState } from "react";

export default function CommentEditor() {
  const [value, setValue] = useState('');
  return (
      <div>
        <textarea value={value} onChange={(v)=>setValue(v)}></textarea>
      </div>
  );
}

المشكلة الآن أن العنصر textarea يكون فارغ بشكل إفتراضي، ولكن عند محاولة كتابة أي شيء سظهر النص [object Object] داخل صندوق textarea، ولا يظهر أي خطأ في الـ console

ما المشكلة في هذا الكود؟ وكيف أقوم بحل المشكلة؟

Recommended Posts

  • 1
نشر

في لغة جافاسكربت عند عمل render ل object أي تحويله لسلة نصية سيتم طباعة العبارة

[object Object]

الحل هو استخلاص القيمة من كائن الحدث v بالشكل 

<textarea value={value} onChange={(v)=>setValue(v.target.value)}>
                                              // ^^^^^^^^^^^^^
</textarea>

في حال أردت زيادة تعقيد دالة إسناد القيمة و عمل تعديلات على القيمة و فلترتها مثلاً، يمكنك فصل دالة المعالجة إلى handler منفصل، وتصبح الشيفرة أكثر قابلية للقراءة

 const handleChange = (event) => {
        setValue(event.target.value);
    };


/*       */


<textarea value={value} onChange={handleChange}>
                               // ^^^^^^^^^^^^^
</textarea>

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...