setState inside Promise in React

后端 未结 3 1626
旧时难觅i
旧时难觅i 2021-01-12 21:47

I have a function in my React code defined like this:

getAttachment(url) {
    fetch(url).then((responseText) => {

        var response = responseText.js         


        
3条回答
  •  無奈伤痛
    2021-01-12 22:23

    This has because you have a different scope inside the function. When using a function it has it's own scope. And "this" used out side the function is not the same when you use it inside the function. The best way of doing this is having a variable "that" and assign the previous "this" to "that".

    class Hello extends React.Component {
        constructor(props) {
            super(props);
            this.getAttachment = this.getAttachment.bind(this);
            this.state = {attachmenet: ""};
        }
    
        getAttachment(url) {
    
             //Code you need to add
             var that = this;
    
             fetch(url).then((responseText) => {
    
                var response = responseText.json();
    
                response.then(function(response){
                   //code you need to change
                   that.setState({ attachment: response });
                });
             });
         }
    
         render() {
             this.getAttachment();
             return 
    ; } }

提交回复
热议问题