0

我在另一个方法中调用一个方法,当我这样做时,它没有找到我正在调用的方法,我不明白该怎么做,所以在调用函数时它知道它在方法之外。

export default class Main extends Component {
    constructor(props) {
        super(props);
        this.state = {
            user: null,
            info: {}
        }
        this.ConsumirGraph = this.ConsumirGraph.bind(this)
        
    }
ConsumirGraph = (token, send) => {
        var info = new Object();
            this.state.info = info
        $.ajax({
            url: send,
            type: "GET",
            headers: {
                "Authorization": "Bearer " + token,
            },
            success: function(data) {
                debugger;
                if (data["@odata.context"] === "https://graph.microsoft.com/v1.0/$metadata#users(department)/$entity") {
                    info.obj = data;
                    console.log(info)
                } else if (data["@odata.context"] === "https://graph.microsoft.com/v1.0/$metadata#directoryObjects/$entity") {
                    info.jefe = data;
                    console.log(info)
                } else {
                    info.user = data;
                    console.log(info)
                }
            },
            error: function(error) {
                debugger;
                console.log(error);
            }
    
        });
    }

    graphi() {
        authContext.acquireToken(adalConfig.endpoints.graphApiUri, function(error, token) {
            if (error) {
                if (adalConfig.popUp) {
                    authContext.acquireTokenPopup(adalConfig.endpoints.graphApiUri, null, null, function(errorDesc, token, error) {});
                    console.log("ADAL error occurred: " + error);
                    return;
                } else {
                    authContext.acquireTokenRedirect(adalConfig.endpoints.graphApiUri, null, null);
                }
            } else {
                console.log('va bien de momentp')
                var headers = new Headers();
                var bearer = "Bearer " + token;
                headers.append("Authorization", bearer);
                var options = {
                    method: "GET",
                    headers: headers
                };
                var graphEndpoint = "https://graph.microsoft.com/v1.0/me";
                let jefe = "https://graph.microsoft.com/v1.0/me/manager";
                let getMemberGroups = "https://graph.microsoft.com/v1.0/me/?$select=department";
                fetch(graphEndpoint, options)
                .then((response) => {
                    this.ConsumirGraph(token, getMemberGroups);
                    this.ConsumirGraph(token, jefe);
                    this.ConsumirGraph(token, graphEndpoint)
                    
                })
            }
        });    
    }    

错误:未处理的拒绝(TypeError):无法读取未定义的属性“ConsumirGraph”

4

2 回答 2

0

不需要在构造函数内部赋值this.ConsumirGraph,你应该简单地把自己放在构造函数中。this.ConsumirGraph.bind(this)this.ConsumirGraph.bind(this)

所以构造函数应该是这样的:

constructor(props) {
        super(props);
        this.state = {
            user: null,
            info: {}
        }
        this.ConsumirGraph.bind(this)
        
    }

于 2021-03-17T23:16:25.507 回答
0

每个函数都有一个this指针。这意味着authContext.acquireToken第二个参数需要与类绑定并获取类this指针。但是您可以简单地将authContext.acquireToken第二个参数转换为箭头函数以使其工作。

于 2021-03-17T23:20:38.903 回答