将 iframe 渲染到 React 中
Rendering iframe into React
我有以下组件:
export default class VideoArchiveContent extends React.Component {
constructor() {
super();
this.state = {
videos: []
}
}
componentDidMount() {
this.VideosTracker = Tracker.autorun(() => {
Meteor.subscribe('videos');
const videos = Videos.find().fetch();
this.setState({ videos })
});
};
componentWillUnmount() {
this.VideosTracker.stop();
};
renderVideos = () => {
return this.state.videos.map((video) => {
return <div key={video._id}>{video.embed}</div>
});
};
render() {
return (
<div>
{this.renderVideos()}
</div>
)
}
};
我期待 iframe 呈现到屏幕上。呈现的是 iframe 字符串。
如果我像这样将 iframe 放在 return 语句中:
return (
<div>
<iframe src="https://player.vimeo.com/video/270962511" width="500" height="281" frameborder="0" allowfullscreen></iframe>
</div>
)
iframe 按预期呈现。
有解决办法吗?
我不确定 iframe
来自哪里,因为我在你的代码中没有看到它作为 HTML
标签,所以我猜它来自服务器一个字符串。可能在 video.embed
.
里面
如果是这种情况,那么您需要使用 dangerouslySetInnerHTML
属性来呈现:
return <div key={video._id} dangerouslySetInnerHTML={{__html:video.embed}} />
谨慎使用,建议先在DOCS中阅读。
运行 示例:
const tweetersIframe = '<iframe src="https://platform.twitter.com/widgets/tweet_button.html" />'
const App = () => (
<div dangerouslySetInnerHTML={{ __html: tweetersIframe}}>
</div>
);
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
我有以下组件:
export default class VideoArchiveContent extends React.Component {
constructor() {
super();
this.state = {
videos: []
}
}
componentDidMount() {
this.VideosTracker = Tracker.autorun(() => {
Meteor.subscribe('videos');
const videos = Videos.find().fetch();
this.setState({ videos })
});
};
componentWillUnmount() {
this.VideosTracker.stop();
};
renderVideos = () => {
return this.state.videos.map((video) => {
return <div key={video._id}>{video.embed}</div>
});
};
render() {
return (
<div>
{this.renderVideos()}
</div>
)
}
};
我期待 iframe 呈现到屏幕上。呈现的是 iframe 字符串。
如果我像这样将 iframe 放在 return 语句中:
return (
<div>
<iframe src="https://player.vimeo.com/video/270962511" width="500" height="281" frameborder="0" allowfullscreen></iframe>
</div>
)
iframe 按预期呈现。
有解决办法吗?
我不确定 iframe
来自哪里,因为我在你的代码中没有看到它作为 HTML
标签,所以我猜它来自服务器一个字符串。可能在 video.embed
.
里面
如果是这种情况,那么您需要使用 dangerouslySetInnerHTML
属性来呈现:
return <div key={video._id} dangerouslySetInnerHTML={{__html:video.embed}} />
谨慎使用,建议先在DOCS中阅读。
运行 示例:
const tweetersIframe = '<iframe src="https://platform.twitter.com/widgets/tweet_button.html" />'
const App = () => (
<div dangerouslySetInnerHTML={{ __html: tweetersIframe}}>
</div>
);
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>