为什么“ this”在render()内起作用但在其他函数上不起作用

时间:2019-04-20 12:49:28

标签: javascript reactjs class this

我目前正在学习React。有人向我介绍了“ this”关键字的问题。基本上我了解它是如何工作的,但是在反应或者在ES6课上我发现自己很困惑。例如,我使用方法 onFormSubmit 使用下面的类 SearchBar 。如果我尝试在此方法内 console.log(this.state.term),它将抛出 undefined property 的错误。 我知道如何解决此错误(箭头功能,绑定等),这不是我的问题。我的问题是我不明白为什么它不能在OnFormSubmit()方法上使用,但是如果我在render()方法中使用console.log(this.state.term),它将可以使用。

import React from 'react';

class SearchBar extends React.Component {

    state = {term: ''};

    onFormSubmit(e) {
        e.preventDefault();
        console.log(this.state.term); //here is the error "cannot read of undefined property"
    }

    render() {
        return(
            <div className="ui segment">
                <form onSubmit={this.onFormSubmit} className="ui form">
                    <div className="field">
                        <label>Image Search</label>
                        <input 
                            type="text" 
                            value={this.state.term}
                            onChange={(e) => this.setState({term: e.target.value})}
                        />
                    </div>
                </form>
            </div>
        );
    }
}

export default SearchBar;

0 个答案:

没有答案