[reactjs] ما الفرق بين "super ()" و "super (props)" في React عند استخدام دروس es6؟


2 Answers

في هذا المثال ، يتم توسيع فئة React.Component و في مواصفات ES2015 ، لا يمكن إنشاء منشئ فئة تابعة استخدام this حتى تم استدعاء super() ؛ أيضا ، يجب على الصانعين فئة ES2015 استدعاء super() إذا كانت فئات فرعية.

class MyComponent extends React.Component {
  constructor() {
    console.log(this); // Reference Error
  }

  render() {
    return <div>Hello {this.props.name}</div>;
  }
}

على نقيض ذلك:

class MyComponent extends React.Component {
  constructor() {
    super();
    console.log(this); // this logged to console
  }

  render() {
    return <div>Hello {this.props.name}</div>;
  }
}

مزيد من التفاصيل لكل هذه الإجابة الممتازة على المكدس

قد تشاهد أمثلة للمكونات التي تم إنشاؤها بواسطة توسيع فئة React.Component التي لا تستدعي super() ولكن ستلاحظ أن هذه لا تحتوي على constructor ، وبالتالي لم يكن ذلك ضروريًا.

class MyOtherComponent extends React.Component {
  render() {
    return <div>Hi {this.props.name}</div>;
  }
}

نقطة واحدة من الارتباك الذي رأيته من بعض المطورين الذين تحدثت إليهم هو أن المكونات التي ليس لها constructor وبالتالي لا تستدعي super() أي مكان ، لا تزال تحتوي على this.props المتاحة في طريقة render() . تذكر أن هذه القاعدة وهذه الحاجة إلى إنشاء this الربط constructor منطبق فقط على constructor .

Question

متى يكون من المهم تمرير props إلى super() ، ولماذا؟

class MyComponent extends React.Component {
  constructor(props) {
    super(); // or super(props) ?
  }
}



حسب كود المصدر

function ReactComponent(props, context) {
  this.props = props;
  this.context = context;
}

يجب عليك تمرير props كل مرة لديك الدعائم وأنت لا تضعها في this.props . this.props يدويا.







Related