0
ListItem에 onClick
이벤트를 설정했습니다. 그런 다음 호출 된 메소드에 .bind
을 호출하여 클릭 된 목록 항목의 ID 및 이름 값을 전달합니다.onClick 이벤트 바인딩에서 매개 변수를 전달하는 방법은 무엇입니까?
다음 SO question은 bind를 사용하여 제안했지만 ListItem에 onCLick 이벤트를 추가하면 목록 바인딩이 깨집니다.
클릭 이벤트를 추가하기 전에 asset.name
에 대한 목록 범위 바인딩이 예상대로 작동하고 목록이 채워집니다.
또한 매개 변수없이 onClick={this._onAssetSelected()
을 시도하면 click 이벤트가 작동하지 않습니다.
질문 : JSX에 onClick 이벤트 바인딩에
어떻게 전달할 수있는 매개 변수?
목록 정의 : 클릭 이벤트에서 호출
<List selectable={true} selected={0}>
{
this.state.data.map(function (asset) {
return (
<ListItem justify="between" onClick={this._onAssetSelected.bind(this, asset.name, asset.id)} >
<span>{asset.name}</span>
</ListItem>
);
})
}
</List>
방법 :
_onAssetSelected(assetName, assetID) {
console.log(assetName);
console.log(assetID);
}
일반적인 폐쇄 방법을 사용하는 것이 좋습니다. 또한 특정 속성보다는 완전한 자산 객체를 전달합니다. – gor181
그래서 위와 같이 익명 함수를 정의했습니다. dev 툴의 콘솔은'Uncaught TypeError : undefined의 _onAssetSelected '속성을 읽을 수 없습니다.이 메소드가 클래스에 정의되어 있음을 알 수 있습니다. 아니면 내가 여기서 다른 것을 놓치고 있습니까? –
렌더에서'return' 전에'var _this = this'를 추가하고 맵 안에서'_this._onAssetSelected'를 사용해야합니다. –