2016-09-08 3 views
2

Wie eine Funktion von innen axios ruft dann unter meinem Code, der nichtFunktionsaufruf von innen axios dann?

handleClick(userid){ 
    axios.get(
    "http://localhost:4000/user/"+userid+"/items.json") 
    .then(function (response) { 
     dispatch(this.buildhtml.bind(response)) 
    }) 
} 


    buildhtml(response){ 
    console.log("m called") 
    } 

buildhtml Funktion ausgeführt wird, funktioniert nicht !! keine Idee

Antwort

3

Ihr Code funktioniert nicht, weil Ihre this mit der aktuellen Implementierung, die Sie haben, nicht definiert wäre.

Können Sie das versuchen?

handleClick(userid){ 
    var self=this; 
    axios.get(
    "http://localhost:4000/user/"+userid+"/items.json") 
    .then(function (response) { 
     self.buildhtml.bind(response) // would work 
     dispatch(self.buildhtml.bind(response)) //wont work 
    }) 
} 

    buildhtml(response){ 
    console.log("m called") 
    } 

Jetzt sehe ich oben auch nicht funktionieren, auch wenn Sie es selbst ändern. Sie versuchen, den Versand zu verwenden. Beim Versand müssen Sie eine Aktion übergeben.. Reduzierer nehmen Status und Aktion als Parameter und aktualisieren den Status basierend auf der übergebenen Aktion.

Jetzt kann eine Aktion ein Objekt oder eine Funktion zurückgeben. Bitte gehen Sie einmal durch Konzepte von redux. Dies ist nicht die Art und Weise wie eine Aktion gesendet werden sollte

+0

nicht gearbeitet hat :( – ashwintastic

+0

können Sie Ihre Komponente einmal teilen? Eine Geige erstellen und den Link teilen? –

+0

bitte diesen Link [Geige link] (https://jsfiddle.net/ob1c0aye/1/) – ashwintastic

1

Bei der Verwendung von Vue.js mit axios hatte ich auch dieses Problem, aber, so habe ich es gelöst.

let vue = new Vue({ 
el:#<element>, 
methods:{ 

    method1() 
    { 
axios.post('<url>',{<data>}) 
.then((res) => { 
    this.method2(res) // method call to method2 
    }) 
.catch((err) => { <call> });  
    },//method1 end 

method2(res){ 
// statements 
} 

} 
}); 

Siehe this.