두 개의 파일이 있습니다. 목록 구성 요소 및 단일 항목 구성 요소. 내 응용 프로그램에서 사용자는 여러 항목을 선택할 수 있습니다. 그런 다음 "목록" "항목"에서 상태 요소를 만들고 사용자가 항목 단추를 클릭하면 목록 요소가 목록 구성 요소에 통지하고 항목을 "목록"에서 항목 배열에 저장합니다.오류 전달 기능 onClick
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"방법을 전달합니다
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 :
나는 다음 코드를List.jsx이 param to Item 그리고 거기에 item의 태그에 onClick 이벤트를 추가합니다. 하지만 나는 onclick 함수에 "data"와 "item"요소를 전달해야합니다. 첫 번째는 Items 배열에서 클릭 한 요소를 저장하거나 단추가 토글 기능을 가질 수 있으므로 요소 배열 (이미있는 경우)을 제거하는 것입니다. 그러나 내 "console.log"에서 화살표 함수가 인 onClick 메서드에서 전달 된 두 매개 변수는 모두 "정의되지 않음"으로 표시됩니다. 몇 가지 예를보고 실수를하지 않습니다. 아무도 도와 줄 수 있니? 감사.
'registrarItems'을'constructor' 클래스의'List' 클래스에 바인딩하거나 클래스 등록 정보로'registarItems'를 정의하십시오 ([stage-2] (https://babeljs.io/docs/plugins/)를 제공하십시오) preset-stage-2 /) 사전 설정)을 선택합니다. –
것은 속성으로 그 메서드를 넣으면, 나는 PArent 클래스에 대한 액세스를 잃어 버렸습니다. 나는 그것을 시도하고 트레이는 콜백 메소드로 생성한다. – jrodriguez