fileChangedHandler = event => {
event.preventDefault();
event.persist();
new ImageCompressor(event.target.files[0], {
quality: .6,
success(result) {
this.setState({selectedFile: result})
},
error(e) {
console.log(e.message);
},
});
}
上面是函数,我想在成功后更改状态,但是我得到setState is not a function
这就是我触发它的方式:
<input style={{display: 'none'}} type="file" onChange={this.fileChangedHandler} ref={fileInput => this.fileInput = fileInput}/>
<button type='button' onClick={() => this.fileInput.click()} className='col m3 btn' style={{textTransform: 'none'}}>Choose image</button>
答案 0 :(得分:6)
success
是常规函数,具有动态this
上下文,该上下文由调用者(ImageCompressor
)确定。
由于fileChangedHandler
方法是箭头,因此this
指的是具有setState
方法的组件类实例。
要在this
内到达词法success
,它应该是一个箭头:
...
success: (result) => {
this.setState({selectedFile: result})
},
...