IT이야기

ajax 콜백의 끝에서 .csu(이것)의 목적?

cyworld 2022. 3. 14. 21:31
반응형

ajax 콜백의 끝에서 .csu(이것)의 목적?

reactjs 튜토리얼에서, 어떤 목적을 가지고 있는가?.bind(this)아약스 콜백의 끝에서?코드가 없으면 코드가 제대로 작동하는가?

        data: JSON.stringify({text: text}),
        success: function (data) {
            this.setState({data: data});
        }.bind(this),

확실히 그렇다.this콜백 안에 있는 정확한 물체가 될 것이다.Function.prototype.bind()를 참조하십시오.

대응해야 할 대안은 다음과 같다.

myAjaxFunction: function(){
  $.getJSON('/something', this.handleData);
},
handleData: function(data){
  this.setState({data: data});
}

이것은 반응으로 구성 요소 메서드의 바인딩이 처리되기 때문에 작동한다.

원래 코드를 바인딩하지 않고 실행한 경우 다음과 같은 오류가 발생할 수 있음:TypeError: undefined is not a function때문에this === window콜백 중.

또는 엄격한 모드로:TypeError: Cannot read property 'setState' of undefined, wherethis === undefined콜백으로

을 갖는 목적.bind(this)AJAX 콜백의 마지막에this당신의 리액션 클래스와 관련이 있다.즉, 다음을 추가할 수 있다.

var self = this;

아약스 바깥에서도 똑같이 작동한다.다음 코드와 같음:

var self = this;
$.ajax({
    .
    .
    data: JSON.stringify({text: text}),
    success: function (data) {
        self.setState({data: data});
    },
    .
    .
});

참조URL: https://stackoverflow.com/questions/24285581/purpose-of-bindthis-at-end-of-ajax-callback

반응형