[英]can't call a function declared inside a component
嘗試調用在組件內聲明的函數時出錯。 這是錯誤消息:未捕獲的類型錯誤:無法讀取未定義的屬性“handleClick”
class LanguageDropDown extends Component {
constructor(props) {
super(props);
this.state = {languageValue: ""};
this.handleLanguageClick = this.handleLanguageClick.bind(this);
}
handleLanguageClick = (languageKey) => {
this.setState({ languageValue: languageKey});
}
render() {
const {intl, value, onChange, onFocus, onBlur, onClick} = this.props;
return (
<React.Fragment>
{
map(languageWhitelist, function(Key) {
return (
<option onClick={this.handleLanguageClick(Key)}
key={Key} value={Key}></option>
);
}, this)
}
</React.Fragment>
);
}
}
這應該工作
class LanguageDropDown extends Component {
state = { languageValue: '' };
_handleLanguageClick(languageValue) {
this.setState({ languageValue });
};
render() {
const { intl, value, onChange, onFocus, onBlur, onClick } = this.props;
return (
<React.Fragment>
{languageWhitelist.map(language => (
<option
onClick={() => this._handleLanguageClick(language)}
key={language}
>
{language}
</option>
))}
</React.Fragment>
);
}
}
通過在類中使用箭頭函數,它會自動綁定到該類,因此只需從構造函數中刪除綁定語句即可。 並將onClick道具設置為回調函數。
class LanguageDropDown extends Component {
constructor(props) {
super(props);
this.state = { languageValue: '' };
}
_handleLanguageClick = languageValue => {
this.setState({ languageValue });
};
render() {
const { intl, value, onChange, onFocus, onBlur, onClick } = this.props;
return (
<React.Fragment>
{languageWhitelist.map(language => (
<option
onClick={() => this._handleLanguageClick(language)}
key={language}
>
{language}
</option>
))}
</React.Fragment>
);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.