私は2つのファイルを持っています。リストComponentと単一項目コンポーネント。私のアプリでは、ユーザーは複数の項目を選択できます。それから私は "リスト" "アイテム"の状態要素を作成し、ユーザーがアイテムボタンをクリックすると、リスト要素はリストコンポーネントに通知し、アイテムを「リスト」からアイテム配列に保存します。エラー通過機能onClick
私は次のコード
List.jsxあります
registrarItems(data,item){
console.log(data,"aqui 1 con",item);
let items = this.state.itemsAgregados.slice();
if(!items.indexOf(data.id_producto)){
console.log("no se encuentra");
items.push(id);
this.setState({
'itemsAgregados':items
});
}else{
console.log("ya existe");
item.removerSeleccion();
}
console.log("registrando items",id);
}
render() {
return (
<div className="content-app">
<Navbar data={this.menu}/>
<div className="container lista-productos">
{
this.state.productos.map((producto, index) => {
return (
<Item data={producto}
registro = {this.registrarItems}
key={producto.id_producto}/>
);
})
}
</div>
</div>
);
}
そしてItem.jsx:
render() {
let props = this.props;
let img = JSON.parse(props.data.imagen);
let imgPath = Rutas.apiStatic + 'img/productos/' + props.data.id_producto + '/' + img.sm;
props.data.items = this;
return (
<div className="row item-listado">
<div className="col-xs-3">
<img src={imgPath} className="img-circle img-item"/>
</div>
<div className="col-xs-7">
<Link to={Rutas.producto + props.data.identificador}>
<h3 className="titulo">{props.data.titulo}</h3>
<span className="price">$ {props.data.precio}</span>
</Link>
</div>
<div className="col-xs-2 text-right">
<ul className="list-unstyled list-acciones">
<li>
<a href="#" onClick={()=>props.registro(props.data,this)} className={this.state.classAdd}>
<i className="fa fa-plus"></i>
</a>
</li>
</ul>
</div>
</div>
)
}
あなたが見ることができるように、私のように "registrarItems" メソッドを渡すをparam to Itemとそこには、itemのタグのonClickイベントとしてこれを追加します。しかし、私はonclick関数に "data"要素と "item"要素を渡す必要があります。最初は、Items配列でクリックされた要素を保存するか、またはボタンがトグル機能を持つ可能性があるため、要素配列を削除します(既に存在する場合は削除します)。しかし、私の "console.log" では、矢印関数を持つonClickメソッドで渡された両方のパラメータが "未定義"として表示されます。 いくつかの例を見ましたが、私は間違いをしません。誰でも助けてくれる?ありがとう。
'registrarItems'を' constructor'のクラス 'List'にバインドしたり、クラスプロパティとして' registarItems'を定義してみてください([stage-2](https://babeljs.io/docs/plugins/)プリセット - ステージ-2 /)プリセット)を使用します。 –
私はプロパティとしてそのメソッドを置く場合、私はPArentクラスへのアクセスを失ったことです。私はそれを試み、トレイはコールバックメソッドとしてそれを作成します。 – jrodriguez