注:我重构了我的问题以使其更易于理解。但是,为了历史目的,我保留了旧版本。setState在ES2016 React中的箭头函数中调用时未安装组件
我有一个React应用程序,当我通过箭头函数调用this.setState()
时,我得到了“component not mounted message”。这里是我的组件:
import React, { Component } from 'react'
class Test extends Component {
state = {
value: ''
}
onChange = (e) => {
e.preventDefault()
this.setState({
value: e.target.value
})
}
render() {
return <input value={ this.state.value } onChange={ this.onChange } />
}
}
当我输入到输入,我收到以下错误信息:
Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op.
我不知道这是为什么,因为箭头的功能不应该是装箱,并且由于这是通过键入触发的,组件显然是挂载的。
感谢您的帮助!
下面是这个问题的先前版本:
我有一个非常标准的阵营应用程序,当我打电话
this.setState()
从 箭头的功能,我得到了“未安装组件消息”。的代码看起来是这样的:
onClick =() => { this.setState({clicked: true}) } ... render() { return <AnotherComponent onClick={ this.onClick } /> }
当
onClick
被调用时,我得到这个消息:Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op.
我不知道是什么原因造成这一点,因为我使用的是箭头 功能,但它仍然无法正常工作。
编辑:至于问,这里是
AnotherComponent
:const AnotherComponent = (props) => { return ( <div> <Button primary>Reject</Button> <Button primary onClick={ props.onClick }>Edit Post</Button> <Button primary>Approve</Button> </div> ) }
感谢
是否还有其他的代码?你在使用道具吗?你有没有限制这个方法?组件是否正确导出并导入到文件中?我认为,如果你能在这里分享更多的代码,那就清楚了。 – Ozan
向我们展示'AnotherComponent'调用'onClick'的位置。显然它没有安装,当你这样做。 – Bergi
@Bergi我已经添加了其他组件以及它如何使用。 –