Javascript 在React中显示组件onClick
一般来说,我对反应和javascript都是新手。这就是问题所在 我有一个在React组件中显示的图像列表。我试图实现的是定义一个方法来处理这些图像中的任何一个的onClick方法,并将一个新的组件渲染为覆盖。这是我的密码Javascript 在React中显示组件onClick,javascript,reactjs,javascript-events,event-handling,Javascript,Reactjs,Javascript Events,Event Handling,一般来说,我对反应和javascript都是新手。这就是问题所在 我有一个在React组件中显示的图像列表。我试图实现的是定义一个方法来处理这些图像中的任何一个的onClick方法,并将一个新的组件渲染为覆盖。这是我的密码 class Viewer extends React.Component{ constructor(props){ super(props); this.state = { images : ImageList }; }
class Viewer extends React.Component{
constructor(props){
super(props);
this.state = {
images : ImageList
};
}
componentDidMount(){
}
handleClick(mediaId, event){
event.preventDefault();
render(){
<MyNewComponent mediaId=mediaId />
}
}
render(){
return (
<div className="row">
<div className="image-viewer">
<ul className="list-inline">
{this.state.images.map(function (image) {
return (<li key={image.mediaId}><a href="#" onClick={this.handleClick.bind(image.mediaId, event)}><img src={image.src}
className="img-responsive img-rounded img-thumbnail"
alt={image.mediaId}/></a></li>);
})}
</ul>
</div>
</div>
);
}
}
export default Viewer;
类查看器扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
图像:图像列表
};
}
componentDidMount(){
}
handleClick(mediaId,事件){
event.preventDefault();
render(){
}
}
render(){
返回(
-
{this.state.images.map(函数(图像)){
返回();
})}
这显然是错误的,并引发了一系列错误。有人能给我指出正确的方向吗。这里是如何处理
单击事件并显示覆盖图的
class Viewer extends React.Component{
constructor(props){
super(props);
this.state = {
images : ImageList,
mediaId : 0
};
// Bind `this`
// See "Binding to methods of React class" link below
this.handleClick = this.handleClick.bind(this);
}
componentDidMount(){ }
handleClick(event){
event.preventDefault();
// Get the value of the `data-id` attribute <a data-id="XX">
var mediaId = event.currentTarget.attributes['data-id'].value;
// Set the state to re render
this.setState({ mediaId }); // ES6 shortcut
// this.setState({ mediaId: mediaId }); // Without shortcut
}
render(){
// Set a variable which contains your newComponent or null
// See "Ternary operator" link below
// See "Why use null expression" link below
var overlay = this.state.mediaId ? <MyNewComponent mediaId={this.state.mediaId} /> : null;
return (
<div className="row">
<div className="image-viewer">
{ overlay }
<ul className="list-inline">
{this.state.images.map(image => {
return (<li key={image.mediaId}><a href="#" onClick={this.handleClick} data-id={image.mediaId}><img src={image.src}
className="img-responsive img-rounded img-thumbnail"
alt={image.mediaId}/></a></li>);
}).bind(this)}
</ul>
</div>
</div>
);
}
}
export default Viewer;
类查看器扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
图片:ImageList,
mediaId:0
};
//把这个绑起来`
//请参阅下面的“绑定到React类的方法”链接
this.handleClick=this.handleClick.bind(this);
}
componentDidMount(){}
handleClick(事件){
event.preventDefault();
//获取`数据id`属性的值);
}).bind(这个)}
);
}
}
导出默认查看器;
文档
传递给map函数。把它放在这里,因为它可能会帮助其他人。我有一些文档和评论。我也解决了这个问题,谢谢。