2016-01-27 2 views
3

У кого-нибудь есть идея, как получить этот атрибут prop в stringToHTML в React? Заранее спасибо!React dangerouslySetInnerHTML для рендеринга iframe youtube встраивания из реквизита?

var Video = React.createClass({ 

getDefaultProps: function getDefaultProps() { 

     return propsObj; 
}, 

createMarkup: function() { 

    return {__html: {this.props.video}}; 
}, 

    render: function() { 
    return (

     <div className="video-container no-controls" id="player" dangerouslySetInnerHTML={createMarkup()} /> 
    ); 
    } 
}); 
+0

Почему вы положили '{...}' around' {this.props.video} '? Это недопустимый JavaScript. –

+0

Было бы замечательно, если бы это исправить, но это не так. – Josh

ответ

7

Существует причина, по которой HTML-инъекция в React имеет такой громоздкий API: его использование сильно не рекомендуется.

Непонятно, почему вы хотели бы использовать HTML-инъекцию для чего-то столь же простого, как и для YouTube iframe. Разметка для него вполне предсказуема.

Я настоятельно рекомендую вам переписать его в JSX. Вот код для компонента YouTube, который я использовал в недавнем проекте.

const YouTubeVideo = ({ id }) => (

    <div className="youtube-wrapper"> 
     <div className="youtube"> 
      <iframe 
       className="youtube-frame" 
       src={`https://www.youtube.com/embed/${id}?autoplay=1`} 
       allowFullScreen 
      /> 
     </div> 
    </div> 

); 
+0

Спасибо, Дэвид! Это то, что мне нужно. Я просто пытался выяснить способ React для того, чтобы пользователь мог вставлять видео с YouTube с бэкэнд. – Josh

+0

Рад, что я мог помочь. Пожалуйста, отметьте как принятый ответ, если вы довольны решением. –

+0

Просто для завершения вы можете просто добавить способ вызова/вызова этого компонента. Спасибо за код. –

Смежные вопросы