ReactJs:获取无法读取未定义错误的属性“setState”[重复]
Posted
技术标签:
【中文标题】ReactJs:获取无法读取未定义错误的属性“setState”[重复]【英文标题】:ReactJs: Getting cannot read property 'setState' of undefined error [duplicate] 【发布时间】:2018-07-25 20:38:29 【问题描述】:我正在使用带有 React 的 axios 进行 webservice get 调用,然后使用以下代码设置状态:
handleRefreshOrgs(e)
let curComponent = this;
axios.get("/api/org").then((res) =>
let result = JSON.parse(res.data[0]).result;
curComponent.setState(
scratchOrgs: result.scratchOrgs,
nonScratchOrgs: result.nonScratchOrgs
)
);
我现在尝试了多种方法来解决这个问题。但是,我尝试过的方法都没有奏效。我尝试使用箭头函数和 bind() 声明一个新变量。但他们都没有工作。
我现在很沮丧。我应该如何解决这个问题?
【问题讨论】:
为什么这样:` let curComponent = this;;You are using arrow function, you can use
this.setState`。这不适合你吗?
用粗箭头函数定义handleRefreshOrgs或将其绑定到类实例。
@Ved 我以前试过。它不适合我。否则我不会使用 let 的东西
你绑定handleRefreshOrgs
like: this.handleRefreshOrgs = this.handleRefreshOrgs.bind(this)
inside constructor?
需要绑定handleRefreshOrgs
【参考方案1】:
您似乎没有将您的handleRefreshOrgs
绑定到this
class classname extends React.Component
constructor()
this.handleRefreshOrgs = this.handleRefreshOrgs.bind(this)
参考此文档:https://medium.freecodecamp.org/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56
【讨论】:
【参考方案2】:您的语法看起来是正确的。您需要将其绑定到类。这就是你将它绑定到类的方式。这是documentation 和代码:
class yourComponent extends React.Component
constructor()
//bind in the constructor
this.handleRefreshOrgs = this.handleRefreshOrgs.bind(this)
【讨论】:
以上是关于ReactJs:获取无法读取未定义错误的属性“setState”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
错误:无法在 reactjs 项目中读取未定义的属性(读取“地图”)\
如何解决“未捕获的类型错误:无法读取未定义的属性'参数'”reactjs + django
TypeError:无法读取reactjs中未定义的属性“长度”
ReactJS TypeError:无法读取未定义的属性“setState”[重复]