私はLikes
と呼ばれるステートレス機能コンポーネントを持っています。その中には、handleLikePlus()
とhandleLikeMinus()
という2つの機能があります。 Likes
コンポーネント内の上向き矢印または下向き矢印をクリックすると、それぞれのそれぞれをトリガーしたいと思います。ここでリアクションでonClick関数を呼び出せません
は私のコンポーネント
function Likes({likes}) {
function handleLikePlus() {
this.setState({
likes: this.state.likes + 1
});
};
function handleLikeMinus() {
this.setState({
likes: this.state.likes - 1
});
};
return (
<div>
<div onClick={this.handleLikePlus()}>
<h5><i className="fa fa-arrow-up" aria-hidden="true"></i></h5>
</div>
<div>
<h4>{likes}</h4>
</div>
<div onClick={this.handleLikeMinus()}>
<h5><i className="fa fa-arrow-down" aria-hidden="true"></i></h5>
</div>
</div>
);
}
マイコンソールリターンのコードです:
私は間違っているつもりですUncaught TypeError: cannot read property 'handleLikePlus' of undefined
?それは単純な構文エラーですか?あるいは私は間違った方法で関数を呼びますか?
ありがとうございます。
ステートレスの全ポイントは「この」を意味しません。確かに 'thie.state'はなく、特に' this.setState'はありません。ステートレスな権利?それらの関数を親から渡します。 onClick = {handLikePlus()}ではなく、 'onClick = {handleLikePlus}'でなければなりません。関数参照を渡しているのではなく、関数を呼び出す結果ではありません。 – azium
ああ、それは愚かな...。名前の手掛かりは、そう? :)それで、解決策は親から渡します。また、関数** call **とは対照的に、関数** reference **であることを知るのに非常に便利です。ありがとう! –
Paulos3000