Подтвердить что ты не робот

React img tag с URL-адресом и классом

В моем JSX файле есть следующий простой код:

/** @jsx React.DOM */

var Hello = React.createClass({
    render: function() {
        return <div><img src='http://placehold.it/400x20&text=slide1' alt={event.title} class="img-responsive"/><span>Hello {this.props.name}</span></div>;
    }
});

React.renderComponent(<Hello name="World" />, document.body);

Выход в DOM выглядит следующим образом:

<div data-reactid=".0">
  <img src="http://placehold.it/400x20undefined1" data-reactid=".0.0">
  <span data-reactid=".0.1">
    <span data-reactid=".0.1.0">Hello </span>
    <span data-reactid=".0.1.1">World</span>
  </span>
</div>

У меня есть две проблемы:

  • URL-адрес изображения отображается некорректно, он отображается как "http://placehold.it/400x20undefined1 '
  • Класс на моем изображении исчезает

Любые идеи?

4b9b3361

Ответ 1

Помните, что ваш img не является элементом DOM, а выражением javascript.

  • Это выражение атрибута JSX. Поместите фигурные скобки вокруг выражения строки src, и он будет работать. См. http://facebook.github.io/react/docs/jsx-in-depth.html#attribute-expressions

  • В javascript атрибут класса является ссылкой с использованием className. См. Примечание в этом разделе: http://facebook.github.io/react/docs/jsx-in-depth.html#react-composite-components

    /** @jsx React.DOM */
    
    var Hello = React.createClass({
        render: function() {
            return <div><img src={'http://placehold.it/400x20&text=slide1'} alt="boohoo" className="img-responsive"/><span>Hello {this.props.name}</span></div>;
        }
    });
    
    React.renderComponent(<Hello name="World" />, document.body);
    

Ответ 2

var Hello = React.createClass({
    render: function() {
      return (
        <div className="divClass">
           <img src={this.props.url} alt={`${this.props.title} picture`}  className="img-responsive" />
           <span>Hello {this.props.name}</span>
        </div>
      );
    }
});