先上代码classAlbumArtextendsReact.Component{getStyles(){return{width:"100%",height:"auto",display:"block",position:"relative",margin:0,overflow:"hidden"}}errorImg(img){console.log(img);img.src="../../../../../build/assets/img/main_tray.png";img.onerror=null;}render(){varid=this.props.playerId+"AlbumArt",imgId=this.props.playerId+"AlbumArtImg"return()}}其中当img加载失败时,我想让他替换成本地的图片,就写了errorImg事件,但是不知道怎么取到img这个标签本身,我现在这么写,取到的this是整个class。问:onError={this.errorImg(this)}如何书写才能取到img标签本身?
2 回答
梦里花落0921
TA贡献1772条经验 获得超6个赞
根据@learning@Timdu@猫切的描述,我就自己改写了一下,整体死路就是不要直接操作html的标签,而是改用state或者props的形式来处理。贴下自己的代码classAlbumArtextendsReact.Component{constructor(props){super(props);this.state={imgUrl:this.props.albumArt}}getStyles(){return{width:"100%",height:"auto",display:"block",position:"relative",margin:0,overflow:"hidden"}}errorImg(){console.log('function-errorImg');//首页默认图片设置this.setState({imgUrl:"../../build/assets/img/main_tray.png"});}render(){varid=this.props.playerId+"AlbumArt",imgId=this.props.playerId+"AlbumArtImg"return(id={id}style={this.getStyles()}>{...this.props}> id={imgId}ref="art"style={{width:"100%",transform:"translateZ(0)"}}src={this.state.imgUrl}onError={this.errorImg.bind(this)}/>)}}解决!再次谢谢三位。
添加回答
举报
0/150
提交
取消