programing

수퍼마켓은 논쟁없이 무엇을 하는가?

prostudy 2022. 3. 31. 20:45
반응형

수퍼마켓은 논쟁없이 무엇을 하는가?

의사들에게서 반응을 배우고 있지만, 어떤 반응을 보이는지는 잘 모르겠어.super()이 예에서 한다.보통 새로운 인스턴스를 만드는 데 전달된 주장을 받아들여 리액션(reaction)이러한 인수를 인스턴스에 통합하는 구성 요소의 생성자 방법?논쟁 없이 무엇을 할 수 있을까?

class LikeButton extends React.Component {
  constructor() {
    super();
    this.state = {
      liked: false
    };
    this.handleClick = this.handleClick.bind(this);
  }
  handleClick() {
    this.setState({liked: !this.state.liked});
  }
  render() {
    const text = this.state.liked ? 'liked' : 'haven\'t liked';
    return (
      <div onClick={this.handleClick}>
        You {text} this. Click to toggle.
      </div>
    );
  }
}

ReactDOM.render(
  <LikeButton />,
  document.getElementById('example')
);

ES6에서는 파생 클래스가 전화를 걸어야 한다.super()건설업자가 있다면 말이야반응할 때 모든 구성 요소는 구성 요소 클래스에서 확장된다.

당신은 실제로 모든 ES6/react 클래스에 대한 생성자가 필요하지 않다.사용자 정의 생성자가 정의되지 않은 경우 기본 생성자를 사용한다.기본 클래스의 경우 다음과 같다.

constructor() {}

파생 클래스의 기본 생성자는 다음과 같다.

constructor(...args) {
  super(...args);
}

너도 전화해야 해super()액세스하기 전에this그 이후this다음에야 초기화됨super()라고 불린다.

사용자 정의 생성자를 사용하는 데에는 몇 가지 이유가 있다.하나는 다음을 사용하여 생성자 내의 초기 상태를 설정할 수 있다는 것이다.this.state = ...를 사용하는 대신에getInitialState라이프사이클 방법

생성자 내부의 클래스 메서드를 다음 구성 요소와 함께 바인딩할 수도 있음this.someClassMethod = this.someClassMethod.bind(this). 실제로 한 번만 생성되기 때문에 생성자에서 메소드를 바인딩하는 것이 좋다.그렇지 않으면 전화하면bind또는 화살표 함수를 사용하여 생성자 외부(예:rendermethod), 실제로 모든 렌더에 함수의 새로운 인스턴스를 생성하는 것으로 끝난다.여기서 그것에 대해 더 읽어보아라.

사용하시려면this.props시공사에서는, 당신은 전화를 해야 한다.super소품을 논거로 삼아:

constructor(props) {
  super(props);
  this.state = {count: props.initialCount};
}

만약 그렇지 않다면,this.props생성자에 정의되지 않음.그러나 여전히 액세스할 수 있음this.props시공자 안에서 어떤 것도 할 필요 없이 시공자 외부의 다른 클래스 어디든.

super자바스크립트의 키워드는 부모 클래스의 메서드를 호출하기 위해 사용된다.그 자체로,super()상위 생성자 함수를 호출하기 위해 생성자 함수 내에서 사용된다.예를 들면 다음과 같다.

class Animal {
  
  constructor(age) {
    console.log('Animal being made');
    this.age = age;
  }
  
  returnAge() {
    return this.age;
  }
  
}

class Dog extends Animal {

  constructor (age){
    super(age);
  }
  
  logAgeDog () {
    console.log(`This dog is: ${ super.returnAge()} years old`);
  }
  
}

const dog = new Dog(5);


console.log(dog);

dog.logAgeDog();

이 예에서 우리는 개 클래스를 가지고 있다.extends애니멀 클래스도그 클래스는 다음 항목을 사용한다.super키워드 두 번첫 번째 발생은 다음과 같은 경우 생성자에 있다.super()상위 클래스 생성자를 호출할 생성자에서 사용된다.그러므로 우리는 그것에 대한 주장으로서 나이 속성을 주어야 한다.이제 그 개는 성공적으로 연령별 특성을 갖게 되었다.

우리는 또한 사용할 수 있다.super부모의 '클래스'(즉, 프로토타입) 특성 및 방법에 접근하기 위해 시공자 외부.우리는 이것을 사용한다.logAgeDog도그 클래스에 위치한다.다음 코드를 사용하십시오.

super.returnAge();

이 내용을 다음과 같이 읽으십시오.

Animal.returnAge();     // superClass.returnAge()

리액션에서 이 기능이 필요한 이유

당신은 그 것이 필요하다.super()키워드 - 생성자를 구현할 만 반응.다음을 수행해야 한다.

constructor(props) {
  super(props);
  // Don't call this.setState() here!
}

이름붙인 부모 클래스Component리액션이 제대로 작동하려면 초기화 작업을 스스로 수행해야 한다.다음 없이 생성자를 구현하는 경우super(props)부르다this.propsComponent될 것이다undefined벌레로 이어질 수 있어

참조URL: https://stackoverflow.com/questions/39822941/what-does-super-do-without-any-arguments

반응형