私は自分自身をes6 +で紹介していますが、別のコンポーネントに関数の小道具を渡そうとするのは苦労します。React.Componentを使用して別のコンポーネントに関数の小道具を正しく渡すにはどうすればいいですか?
これは私のコードです:
class ProductList extends React.Component {
constructor(props) {
super(props);
this.onVote = this.handleProductUpVote.bind(this);
}
handleProductUpVote(productId) {
console.log(productId +" was upvoted.")
}
render() {
const products = Data.map((product) => {
return (
<Product
key={'product-'+product.id}
id={product.id}
title={product.title}
description={product.description}
url={product.url}
votes={product.votes}
submitter_avatar_url={product.submitter_avatar_url}
product_image_url={product.product_image_url}
onVote={this.handleProductUpVote}
/>
);
});
return (
<div className="ui items">
{products}
</div>
);
}
}
私は(製品)このコンポーネントで機能onVoteを渡したい
class Product extends React.Component {
handleUpVote() {
this.props.onVote(this.props.id).bind(this) /* the error is here, I am trying
to pass the id props, and invoke the onVote prop here */
}
render() {
return (
<div className="item">
<div className="image">
<img src={this.props.product_image_url} />
</div>
<div className="middle aligned content">
<div className="description">
<a onClick={this.handleUpVote}>
<i className="large caret up icon"/>
</a>
{this.props.votes}
</div>
<div className="description">
<a href={this.props.url}>
{this.props.title}
</a>
</div>
<div className="extra">
<span> Submitted by: </span>
<img
className="ui avatar image"
src={this.props.submitter_avatar_url}
/>
</div>
</div>
</div>
);
}
}
私はここで他の小道具と何の問題もありません。 handleUpVoteで関数を呼び出そうとしていますが、バインドを使用しましたが、動作させることはできません。助けて?
に感謝しています。これは、私がやったことです。 コンストラクタ(小道具){ \t \t super(props); \t \t this.onVote = this.handleProductUpVote.bind(this); \t}と製品コンポーネントにonVote = {this.onVote}、製品のような成分、 handleUpVote(){ \t \t this.props.onVote(this.props.id)で呼び出さ。 \t}、私はまだ「Uncaught TypeError:あなたの答えから、プロパティ '小道具のヌル」を読み取ることができません、私の理解です。あなたは私にそれをする方法を詳しく教えてもらえますか?私は本当に感謝しています –
私は固定された製品コンポーネントの答えを更新しました。間違った方法でhandleUpVoteをバインドしていましたが、これはコンストラクタで行う必要があります。 –