프로토콜 적용을 사용하여 함수에서 호출되는 콜백 함수에 'this'객체를 전달하는 방법

SolardiaX

다음과 같은 주요 기능으로 인해 'setState'는 유효한 속성 예외가 아닙니다.

componentWillMount = function () {
    api.daysOfMonth(this, this.props.month, this.props.year, function (ds) {
        var days = [];
        ds.forEach(function (jsonDay) {
            var day =  {date: jsonDay.date, inRange: jsonDay.inRange};
            days.push(day);
        });

        this.setState({ daysOfMonth: days });
  });

api.js의 스 니펫은 다음과 같습니다. 주 함수 호출 Api.daysOfMonth (...), Api.daysOfMonth는 전역 객체를 사용하여 ajax 메서드를 호출하고 프로토콜 적용을 사용하여 콜백 함수를 호출합니다. 콜백 함수는 위 스크립트와 같이 주 함수에서 전달됩니다.

ApiImpl = (function () {
                function ApiImpl() { }
                
                ApiImpl.prototype.invoke = function (callerObj, callback, action) {
                    var params = [];
                    for (var _i = 3; _i < arguments.length; _i++) {
                        params[_i - 3] = arguments[_i];
                    }

                    params.push(callback); //push callback function into params, so object of QWebChannel can callback the function after execute the 'action'
                    
                    if (typeof window['api'] === 'undefined') {
                        new QWebChannel(qt.webChannelTransport, function (channel) {
                            window['api'] = channel.objects.api;
                           
                            var func = window['api'][action].bind(callerObj); 
                            return func.apply(callerObj, params); //here goes error
                        });
                    }
                    
                    var func = window['api'][action].bind(callerObj);
                    return func.apply(callerObj, params); //here goes error
                };
                return ApiImpl;
            }());
            Api = (function () {
                function Api() {
                }
                Api.daysOfMonth = function (callerObj, month, year, callback) {
                    this.impl.invoke(callerObj, callback, 'daysOfMonth', month, year);
                };
                return Api;
            }());
            Api.impl = new ApiImpl();
            exports_1("Api", Api);

축 샌들

이것이 귀하의 질문에 대답한다면, 그 이유는 새로 생성 된 함수를 첫 번째 인수로 전달 한 함수에 .bind()바인딩 하기 때문 this입니다.

componentWillMount = function () {
    api.daysOfMonth(this, this.props.month, this.props.year, function (ds) {
        var days = [];
        ds.forEach(function (jsonDay) {
            var day =  {date: jsonDay.date, inRange: jsonDay.inRange};
            days.push(day);
        });

        this.setState({ daysOfMonth: days });
  }.bind(this));

참조 : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind

es6를 작성하면 화살표 기능을 사용하여 동일한 작업을 수행 할 수 있습니다.

componentWillMount = function () {
    api.daysOfMonth(this, this.props.month, this.props.year, (ds) => {
        var days = [];
        ds.forEach(function (jsonDay) {
            var day =  {date: jsonDay.date, inRange: jsonDay.inRange};
            days.push(day);
        });

        this.setState({ daysOfMonth: days });
  });

요컨대, this화살표 함수는 화살표 함수가 정의 된 곳 this과 동일 하다는 것을 의미하는 어휘 범위입니다 this.

참조 : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

tkinter의 콜백 함수에서 호출 값을 전달하는 방법

분류에서Dev

Javascript-원래 객체를 콜백 함수에 전달하는 방법

분류에서Dev

프로토콜을 준수하는 객체의 배열을 함수에 전달

분류에서Dev

콜백 함수에서 함수 호출로 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

ReactJS Hooks에서 콜백 함수를 사용하는 방법

분류에서Dev

Codeigniter에서 콜백 함수를 사용하는 방법

분류에서Dev

프로토콜 관련 유형을 사용하여 Swift에서 일반 함수를 작성하는 방법

분류에서Dev

프로토콜 함수 내에서 reloadData ()를 호출하는 방법

분류에서Dev

콜백 함수에서 __doPostBack을 호출하는 방법

분류에서Dev

iOS에서 프로토콜을 사용하여 여러 값을 전달하는 적절한 방법

분류에서Dev

JavaScript에서 콜백 함수에 변수를 전달하는 방법

분류에서Dev

$ (this)를 콜백 함수에 전달하는 방법

분류에서Dev

콜백 함수 내에서 상속 된 함수를 호출하는 방법

분류에서Dev

내부 함수 값을 콜백에 매개 변수로 전달하는 방법

분류에서Dev

호출 함수에서 반환하는 것을 가져 오는 동안 지역 변수를 콜백에 전달하는 방법은 무엇입니까?

분류에서Dev

C ++ 부스트 함수 콜백. 함수를 콜백으로 호출하고 내부에 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

react를 사용하여 "react use hook을 콜백 함수 내에서 호출 할 수 없음"오류를 수정하는 방법은 무엇입니까?

분류에서Dev

Lo-dash를 사용하여 _.filter의 콜백 함수에서 배열을 반복하는 방법

분류에서Dev

이 함수에서이 콜백 메시지를 사용하는 방법

분류에서Dev

NodeJS Map 함수를 사용하여 then () 반환 객체를 then () 함수에 입력으로 전달하는 방법

분류에서Dev

pybind11을 사용하여 C ++ 스레드 내에서 Python 함수를 콜백으로 호출하는 방법

분류에서Dev

rxjs subscribe () 콜백 함수에 객체를 전달하는 방법은 무엇입니까?

분류에서Dev

highcharts-angular 콜백 함수를 사용하여 차트 객체를 얻는 방법

분류에서Dev

콜백을 미리 정의 된 콜백에 변수로 전달하는 방법

분류에서Dev

std :: string을 사용하여 객체에서 함수를 호출하는 방법

분류에서Dev

함수 내에서 콜백 함수를 사용하는 방법은 무엇입니까?

분류에서Dev

API와 함께 jsonp 콜백 함수를 사용하는 방법

분류에서Dev

Node.js : 콜백에서 함수를 다시 호출하는 방법

분류에서Dev

콜백이 JS의 콜백에 등록 된 멤버 함수를 소유 한 객체에 대한 참조를 전달하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    tkinter의 콜백 함수에서 호출 값을 전달하는 방법

  2. 2

    Javascript-원래 객체를 콜백 함수에 전달하는 방법

  3. 3

    프로토콜을 준수하는 객체의 배열을 함수에 전달

  4. 4

    콜백 함수에서 함수 호출로 변수를 전달하는 방법은 무엇입니까?

  5. 5

    ReactJS Hooks에서 콜백 함수를 사용하는 방법

  6. 6

    Codeigniter에서 콜백 함수를 사용하는 방법

  7. 7

    프로토콜 관련 유형을 사용하여 Swift에서 일반 함수를 작성하는 방법

  8. 8

    프로토콜 함수 내에서 reloadData ()를 호출하는 방법

  9. 9

    콜백 함수에서 __doPostBack을 호출하는 방법

  10. 10

    iOS에서 프로토콜을 사용하여 여러 값을 전달하는 적절한 방법

  11. 11

    JavaScript에서 콜백 함수에 변수를 전달하는 방법

  12. 12

    $ (this)를 콜백 함수에 전달하는 방법

  13. 13

    콜백 함수 내에서 상속 된 함수를 호출하는 방법

  14. 14

    내부 함수 값을 콜백에 매개 변수로 전달하는 방법

  15. 15

    호출 함수에서 반환하는 것을 가져 오는 동안 지역 변수를 콜백에 전달하는 방법은 무엇입니까?

  16. 16

    C ++ 부스트 함수 콜백. 함수를 콜백으로 호출하고 내부에 매개 변수를 전달하는 방법은 무엇입니까?

  17. 17

    react를 사용하여 "react use hook을 콜백 함수 내에서 호출 할 수 없음"오류를 수정하는 방법은 무엇입니까?

  18. 18

    Lo-dash를 사용하여 _.filter의 콜백 함수에서 배열을 반복하는 방법

  19. 19

    이 함수에서이 콜백 메시지를 사용하는 방법

  20. 20

    NodeJS Map 함수를 사용하여 then () 반환 객체를 then () 함수에 입력으로 전달하는 방법

  21. 21

    pybind11을 사용하여 C ++ 스레드 내에서 Python 함수를 콜백으로 호출하는 방법

  22. 22

    rxjs subscribe () 콜백 함수에 객체를 전달하는 방법은 무엇입니까?

  23. 23

    highcharts-angular 콜백 함수를 사용하여 차트 객체를 얻는 방법

  24. 24

    콜백을 미리 정의 된 콜백에 변수로 전달하는 방법

  25. 25

    std :: string을 사용하여 객체에서 함수를 호출하는 방법

  26. 26

    함수 내에서 콜백 함수를 사용하는 방법은 무엇입니까?

  27. 27

    API와 함께 jsonp 콜백 함수를 사용하는 방법

  28. 28

    Node.js : 콜백에서 함수를 다시 호출하는 방법

  29. 29

    콜백이 JS의 콜백에 등록 된 멤버 함수를 소유 한 객체에 대한 참조를 전달하는 방법은 무엇입니까?

뜨겁다태그

보관