我有一个简单的表格,允许用户创建纯文本帖子。下面的代码在createPostRequest调用之后生成成功的服务器端响应。但是,在发布成功之后,我想更新状态以清空postBody字段并更新UI以反映此更改,然后允许用户发出后续请求以发布其他消息。
createPostRequest
当前,一切都仅对第一个请求有效,并且在成功的初始请求之后,postBody字段不会清空,并且当尝试在第一个初始请求之后更改post字段的值时,每次击键都会导致以下错误:
Uncaught TypeError: Cannot read property 'setState' of undefined
注意,有点奇怪的是,尽管绑定this到构造函数中的onChange方法,但还是遇到了上述错误。
this
有人遇到过这个问题吗?我感谢有关如何解决的任何建议。
constructor(props) { super(props); this.state = { postBody : "", location: "main" }; this.onSubmit = this.onSubmit.bind(this); this.onChange = this.onChange.bind(this); } onChange(e) { this.setState({ [e.target.name] : e.target.value }); } onSubmit(e) { e.preventDefault(); this.props.createPostRequest(this.state).then( () => { this.setState = ({ postBody : "" }); } ) } render() { return ( <div className="create-post-inner col-md-12"> <form id="createPost" onSubmit={ this.onSubmit } > <textarea value={this.state.postBody} className="form-control postInput" name="postBody" onChange={ this.onChange } > </textarea> <span>The value of the state is {this.state.postBody}</span> <input type="submit" className="submit btn btn-primary" /> </form> </div> ); }
=在this.setState之后还有一个额外的内容。将以下内容更改为
=
this.props.createPostRequest(this.state).then( () => { this.setState({ postBody : "" }); } )