React的img标签中的onError

joshlevy89

我想在反应中用默认图像替换断开的链接。我通常为此使用onerror,但是它没有按预期工作。具体来说,我反复遇到“无法在现有状态转换过程中(例如在之内render更新”的错误最终,将显示默认图像,但是需要花费很长时间(多次打印此错误)。这是一个非常相似的问题,在这里问:react.js替换img src onerror我尝试了此解决方案(第一个解决方案,未使用jQuery),但导致了所描述的错误。我猜onError必须不断被触发,从而导致不断的重新渲染。是否有其他解决方案/修复程序?

   import React from 'react';
import { connect } from 'react-redux';
//import AddImageModal from '../components/AddImageModal.js';
import Button from 'react-bootstrap/lib/Button';
//import { getPostsByUserId } from 'actions'
import Posts from '../components/Posts.js';
var Modal = require('react-modal');
require('../../styles/AddImageModal.scss');
import { save_post } from '../actions';

 const customStyles = {
  content : {
    top                   : '50%',
    left                  : '50%',
    right                 : 'auto',
    bottom                : 'auto',
    marginRight           : '-50%',
    transform             : 'translate(-50%, -50%)'
  }
};

var MyWallScreen = React.createClass({

  getInitialState: function() {
    return { 
      modalIsOpen: false,
      imageUrl: "" 
    };
  },

  openModal: function() {
    this.setState({modalIsOpen: true});
  },

  afterOpenModal: function() {
    // references are now sync'd and can be accessed. 
    this.refs.subtitle.style.color = '#f00';
  },

  closeModal: function() {
    this.setState({modalIsOpen: false});
  },

  setUrl: function(e,val) 
  {
    if (e.keyCode === 13) 
        {
          this.setState({
            imageUrl: val
          });
        }
  },

  resetImageUrl: function()
  {
    this.setState({
      imageUrl: ""
    });
  },

  onError: function() {
    this.setState({
      imageUrl: "default.jpg"
    });
  },


  render: function() {
    const { userPosts, dispatch } = this.props;
    return (
      <div>
        <button onClick={this.openModal}>Add Image</button>

        {/* The meat of the modal. */}
        <Modal
          isOpen={this.state.modalIsOpen}
          onAfterOpen={this.afterOpenModal}
          onRequestClose={this.closeModal}
          style={customStyles} >

        <div className="modalBox">
          <h2 className="modalBanner">Add an image link</h2>
          <input ref="urlInput" 
                className="modalInput"
                onKeyDown={e=>this.setUrl(e,this.refs.urlInput.value)}/>
          {this.state.imageUrl ?
            <img className="modalImage" 
                  src={this.state.imageUrl}
                  onError={this.onError()}/>
            :<div className="modalImage"></div>
          }
          <div>
            <Button className="modalButton" bsStyle = "success" 
                onClick = {() => {
                dispatch(save_post(0,this.state.imageUrl));
                this.closeModal();
                this.resetImageUrl();
                }}>
                Post
            </Button>
            <Button className="modalButton" bsStyle = "danger" 
                onClick = {() => {
                  this.closeModal();
                  this.resetImageUrl();
                }}>
                Cancel
            </Button>
          </div>
        </div>
        </Modal>


        <Posts posts={userPosts}/>
      </div>
    );
  }
});


function mapStateToProps(state, ownProps) {
  return {
    userPosts: state.posts[0]
  }
}


MyWallScreen = connect(mapStateToProps)(MyWallScreen);

export default MyWallScreen;
罗斯·艾伦

该代码正在调用this.onError而不是传递对其的引用。的每个呼叫都render在呼叫this.onError()删除括号,然后查看是否可以解决该问题:

<img className="modalImage" 
  src={this.state.imageUrl}
  onError={this.onError()}/> // `onError` is being called here

固定版本:

<img className="modalImage" 
  src={this.state.imageUrl}
  onError={this.onError}/> // `onError` is being passed as a reference here

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React使用img onerror

来自分类Dev

Chrome扩展程序-修复img标签onerror无限循环

来自分类Dev

Chrome扩展程序-修复img标签onerror无限循环

来自分类Dev

如何在img标签的onerror属性上发送HTTP请求?

来自分类Dev

Img未显示在img标签reactjs中

来自分类Dev

OnError img 替换问题

来自分类Dev

PHP中的Img标签替换

来自分类Dev

在img标签中定位SVG?

来自分类Dev

使用img标签中的数据

来自分类Dev

img标签中的渐变属性

来自分类Dev

删除lxml中的img标签

来自分类Dev

PHP中的Img标签替换

来自分类Dev

从变量中搜索<Img>标签

来自分类Dev

计算div标签中img标签的数量

来自分类Dev

如何在React中的React.createElement()内部定义一个img标签?

来自分类Dev

div标签和标签中的img标签的nth-child

来自分类Dev

Preg_match在特定的img标签中查找img src

来自分类Dev

图片未显示在img标签中

来自分类Dev

SVG不显示在Safari的img标签中

来自分类Dev

Firefox中的img标签宽度高度问题

来自分类Dev

使用jQuery在ul中定位img标签

来自分类Dev

在选项文本中添加html img标签

来自分类Dev

从Android中的<img>标签提取图像src

来自分类Dev

在IMG标签中回显图像路径

来自分类Dev

在jquery中更改img标签的类名称

来自分类Dev

如何从flutter中的html过滤img标签

来自分类Dev

更改嵌套alt标签中的img

来自分类Dev

如何从VBA中的img标签解析src

来自分类Dev

将<img>标签与表格中的文本对齐