React-tags: تحذير بشأن مكون الإدخال

تم إنشاؤها على ١٨ سبتمبر ٢٠١٨  ·  7تعليقات  ·  مصدر: i-like-robots/react-tags

أتلقى تحذيرًا باستخدام 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}

ماذا تعتقد؟
شكرا!

bug unconfirmed

التعليق الأكثر فائدة

لقد أضفت 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 }}
/>

ال 7 كومينتر

لدي نفس المشكلة ، أي اقتراحات؟

أخشى أنني لم أر هذا بنفسي ، هل يمكنك إعلامي بإصدار 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 شروط:

https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/ReactControlledValuePropTypes.js#L32 -L46

هذا هو الشرط الأول الذي يهمني لأنه افتراضيًا ، يجب أن يتم تقييم هذا _should_ إلى true لأن القيمة الافتراضية لـ state.query عبارة عن سلسلة فارغة. لذلك يجب أن يتسبب هذا في إرجاع الوظيفة مبكرًا وليس إخراج تحذير.

لذلك لتشغيل هذا التحذير ، كان علي تغيير الحالة الافتراضية (https://github.com/i-like-robots/react-tags/blob/master/lib/ReactTags.js#L35) لجعلها قيمة صحيحة.

هل لدى أي منكم ممن يواجهون مثالاً يوضح المشكلة حتى أتمكن من النظر فيها عن كثب؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

filippofilip95 picture filippofilip95  ·  4تعليقات

yrik picture yrik  ·  4تعليقات

thienanle picture thienanle  ·  9تعليقات

famouspotatoes picture famouspotatoes  ·  5تعليقات

ekinalcar picture ekinalcar  ·  10تعليقات