首页 > 解决方案 > 在非箭头函数内调用 this.setState?

问题描述

我正在使用一个来处理文件的内容。我正在使用function而不是arrow function因为我需要访问decode method. 但是后来我想将函数的结果设置为组件的状态。但当然,在这种情况下,这不再指向组件。

我不确定在那里做什么?

reader.loadFile(file)
                    .then((response) =>  {
                        reader.iterateLines({
                            eachLine: function (raw, progress, lineNumber)  {
                                console.log(this.decode(raw))
                                this.setState({
                                    txtFileContent: this.decode(raw)
                                });
                            },
                        })
                    })
                    .catch( (reason): void => {
                        console.log(this);
                    });

标签: reactjs

解决方案


在您仍然有能力的情况下将其分配给那个:

const that = this;

稍后,在 this 不再是您想要的“this”的范围内,您仍然可以调用它的方法。

that.setState(....);

请记住,'that' 是一个通用提议,这个常量的任何语义名称都是更好的选择。


推荐阅读