أتلقى تحذيرًا باستخدام ReactTags
:
Warning: Failed prop type: You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.
in input (created by Input)
in div (created by Input)
in Input (created by ReactTags)
in div (created by ReactTags)
in div (created by ReactTags)
مما يقال هنا ربما يجب علينا تغيير https://github.com/i-like-robots/react-tags/blob/master/lib/Input.js#L78 بشيء مثل:
defaultValue={query}
ماذا تعتقد؟
شكرا!
لدي نفس المشكلة ، أي اقتراحات؟
أخشى أنني لم أر هذا بنفسي ، هل يمكنك إعلامي بإصدار React الذي تستخدمه؟
أنا أستخدم React 16.3.2
@ i-like-robots كما أنني أتلقى هذه المشكلة.
لقد أضفت PR للتغيير إلى defaultValue ، ولكن إذا كنت تريد اختراقًا يتجنب التحذير حتى يتم إصلاح ذلك ، فيمكنك إضافة طريقة noop إلى فصلك الذي يستخدم ReactTags والإشارة إليه على أنه onChange لمكونك. إنه قبيح ، لكنه سيوقف التحذيرات.
noOp() {
// does nothing
}
<ReactTags
tags={this.state.tags}
suggestions={this.state.suggestions}
handleAddition={this.handleTagAddition}
handleDelete={this.handleTagDelete}
inputAttributes={{ onChange: this.noOp }}
/>
هذه مشكلة مثيرة للاهتمام ، وقد تمت مناقشتها مطولاً منذ بضع سنوات في https://github.com/facebook/react/issues/1118 (على الرغم من أنني لم أر هذا التحذير مطلقًا ، مع أي إصدار من React بما في ذلك 16.3.2! )
لا يوجد شيء خاطئ من الناحية الفنية في التنفيذ الحالي ولكني أوافق على أن التحذيرات التي تسبب فوضى في وحدة التحكم مزعجة ويجب تجنبها.
لست متأكدًا من أن تعيين defaultValue
هو الحل الصحيح لأنه قد يكون له عواقب غير مقصودة (انظر https://github.com/i-like-robots/react-tags/pull/139#issuecomment-431006214 ) ولكن يحتمل أن يكون هناك العديد من الحلول الأخرى المتاحة.
بالنظر إلى هذا أكثر ، يمكنني أن أرى أن هذا التحذير له 5 شروط:
هذا هو الشرط الأول الذي يهمني لأنه افتراضيًا ، يجب أن يتم تقييم هذا _should_ إلى true
لأن القيمة الافتراضية لـ state.query
عبارة عن سلسلة فارغة. لذلك يجب أن يتسبب هذا في إرجاع الوظيفة مبكرًا وليس إخراج تحذير.
لذلك لتشغيل هذا التحذير ، كان علي تغيير الحالة الافتراضية (https://github.com/i-like-robots/react-tags/blob/master/lib/ReactTags.js#L35) لجعلها قيمة صحيحة.
هل لدى أي منكم ممن يواجهون مثالاً يوضح المشكلة حتى أتمكن من النظر فيها عن كثب؟
التعليق الأكثر فائدة
لقد أضفت PR للتغيير إلى defaultValue ، ولكن إذا كنت تريد اختراقًا يتجنب التحذير حتى يتم إصلاح ذلك ، فيمكنك إضافة طريقة noop إلى فصلك الذي يستخدم ReactTags والإشارة إليه على أنه onChange لمكونك. إنه قبيح ، لكنه سيوقف التحذيرات.