We want to hear from you!Take our 2021 Community Survey!
This site is no longer updated.Go to react.dev

PropTypes-ı Çağırmamaq Xəbərdarlığı

Qeyd:

React v15.5-dən başlayaraq React.PropTypes fərqli paketə köçürülüb. Əvəzinə prop-types kitabxanasını yükləyin.

Köhnə PropTypes çağırışlarını yeni kitabxana çağırışlarına avtomatik çevirmək üçün codemod skriptindən istifadə edə bilərsiniz.

React-in gələcək əsas versiyalarında PropTypes validasiyalarını tətbiq edən kodlar produksiyadan silinəcək. Bu baş verdikdə, PropType validasiya funksiyalarını əl ilə çağıran kodlar produksiya zamanı silinməyib xəta yaradacaq.

PropTypes-ı təyin ətmək hələdə mümkündür

PropTypes-ın normal istifadəsi hələ də dəstəklənir:

Button.propTypes = {
  highlighted: PropTypes.bool
};

Burada heç nə dəyişmir.

PropTypes-ı birbaşa çağırmayın

React komponentlərinin annotasiya edilməsindən əlavə işlər üçün PropTypes-ın işlədilməsi artıq dəstəklənmir:

var apiShape = PropTypes.shape({
  body: PropTypes.object,
  statusCode: PropTypes.number.isRequired
}).isRequired;

// Dəstəklənmir!
var error = apiShape(json, 'response');

Əgər sizə PropTypes-ı bu formada işlətmək lazımdırsa PropTypes-ın forkunu yaratmağı (bu iki paket kimi) tövsiyə edirik.

Bu xəbərdarlığı düzəltmədikdə React 16-da yazılmış applikasiya produksiyada sınacaq.

PropTypes-ı birbaşa çağırmadıqda bu xəbərdarlığı görürsünüzsə

Xəbərdarlıqdan yaranan stək izini yoxlayın. Siz bu formada PropTypes-ı birbaşa çağıran komponenti tapacaqsınız. Adətən, bu xəbədarlıq React-in PropTypes kitabxanasını əhatə edən 3-cü tərəfin yaratdığı PropTypes kitabxanasından yarana bilər. Məsələn:

Button.propTypes = {
  highlighted: ThirdPartyPropTypes.deprecated(
    PropTypes.bool,
    'Use `active` prop instead'
  )
}

Bu ssenaridə ThirdPartyPropTypes.deprecated funksiyası PropTypes.bool funksiyasını çağırır. Bu pattern özlüyündə normaldır. Lakin bu pattern səhv müsbətin yaranması ilə nəticələnə bilər. Çünki React, PropTypes-ı birbaşa çağırdığınızı fikirləşir. Sonrakı bölmədə, ThirdPartyPropTypes kimi kitabxananın bu problemi necə düzəldəcəyini başa salacağıq. Əgər bu kitabxana sizə məxsus deyilsə kitabxana yaradıcısını bu problemi düzəltməsi üçün məlumatlandırın.

3-cü tərəfin PropTypes kitabxanasında səhv müsbətin düzəlişi

Əgər 3-cü tərəfin PropTypes kitabxanasının yaradıcısınızsa və istifadəçilərə mövcud React PropTypes-ı əhatə etməyə imkan yaradırsınızsa, istifadəçilər sizin kitabxananızı işlətdikdə bu xəbərdarlığı görə bilərlər. Bu xəbərdarlıq React-in əl ilə çağrılan PropTypes çağırışlarını aşkar etmək üçün göndərdiyi sonuncu “gizli” arqumenti görməməsindən baş verir.

Bu problemi aşağıdakı formada düzəldə bilərsiniz. Biz react-bootstrap/react-prop-types paketindən deprecated funksiyasını misal kimi gətirəcəyik. Cari tətbiqdə yalnız props, propNamecomponentName arqumentləri göndərilir:

export default function deprecated(propType, explanation) {
  return function validate(props, propName, componentName) {
    if (props[propName] != null) {
      const message = `"${propName}" property of "${componentName}" has been deprecated.\n${explanation}`;
      if (!warned[message]) {
        warning(false, message);
        warned[message] = true;
      }
    }

    return propType(props, propName, componentName);
  };
}

Səhv müsbəti düzəltmək üçün PropTypes-a bütün arqumentləri göndərdiyinizdən əmin olun. Bunu ES6-ın ...rest sintaksisi ilə asan formada tətbiq etmək mümkündür:

export default function deprecated(propType, explanation) {
  return function validate(props, propName, componentName, ...rest) { // ...rest-ə fikir verin
    if (props[propName] != null) {
      const message = `"${propName}" property of "${componentName}" has been deprecated.\n${explanation}`;
      if (!warned[message]) {
        warning(false, message);
        warned[message] = true;
      }
    }

    return propType(props, propName, componentName, ...rest); // və burada
  };
}

Bu arqumentlərin əlavəsi xəbərdarlığı susduracaq.

Is this page useful?Bu səhifəni redaktə edin