onChange事件没有因为反应而被解雇

Ime*_*iri 2 javascript reactjs

我的反应组件中有以下事件.

/**
 * On search change handler.
 * @param {any} e Event object
 * @memberof Login
 */
onSearchValueChange(e) {
    this.setState({
        search: e.target.value,
    });
}

/**
 * Render the token view if present.
 * @param {object} e Event object.
 */
keyPress(e) {
    if (e.keyCode === 13 && this.state.search !== '') {
        e.preventDefault();
        searchPackage(this.state.search).then((response) => {
            this.setState({
                redirect: true,
                redirectOnSearch: true,
                searchResults: response.data,
            });
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

绑定到以下输入元素,该元素来自react-bootstrap.

<FormControl key='search' id='search' type='text' placeholder='Search Packages' value={this.state.search} onKeyDown={this.keyPress} onChange={this.onSearchValueChange} />
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在文本框中键入任何内容时,它只会触发keyPress事件,但不会触发事件onSearchValueChange.

我在这做错了什么?我绑定了构造函数中的所有事件.

Maa*_*oAk 7

您需要添加.bind(this)到您的功能.简单的方法,在标签内:

<FormControl ... onKeyDown={this.keyPress.bind(this)} 
 onChange={this.onSearchValueChange.bind(this)} />
Run Code Online (Sandbox Code Playgroud)