Javascript 如何使用React替换iframe的URL?

Javascript 如何使用React替换iframe的URL?,javascript,html,iframe,reactjs,Javascript,Html,Iframe,Reactjs,考虑以下简单的React组件,该组件显示YouTube视频并具有更改视频的按钮: import React from 'react'; import ReactDOM from 'react-dom'; class Video extends React.Component { state = { video: 'G8KpPw303PY' }; handleClickButton = event => { this.setState({ video: 'PHAc3_ME

考虑以下简单的React组件,该组件显示YouTube视频并具有更改视频的按钮:

import React from 'react';
import ReactDOM from 'react-dom';

class Video extends React.Component {
  state = { video: 'G8KpPw303PY' };

  handleClickButton = event => {
    this.setState({ video: 'PHAc3_MEjgQ' });
  };

  render() {
    return (
      <div>
        <iframe
          src={`https://www.youtube.com/embed/${this.state.video}?autoplay=1`}
        />
        <input
          type="button"
          value="Change Video"
          onClick={this.handleClickButton}
        />
      </div>
    );
  }
}

ReactDOM.render(<Video />, document.getElementById('react-root'));
从“React”导入React;
从“react dom”导入react dom;
类Video.Component{
状态={video:'G8KpPw303PY'};
handleClickButton=事件=>{
this.setState({video:'PHAc3_MEjgQ'});
};
render(){
返回(
);
}
}
render(,document.getElementById('react-root');
如果我点击这个按钮,视频就会改变(应该如此)。但是,网页也会添加到浏览器历史记录中。如何使页面不添加到浏览器历史记录中


我知道要在vanilla JavaScript中的iframe中加载新的URL,我们需要使用
iframe.contentWindow.location.replace('URL')
。由于反应的声明性/功能性,做类似的事情看起来真的很难,我知道需要对这样的事情进行内建支持。

你可以考虑用整个iFrAME完全替换你的嵌入URL<代码> <代码>。 您可以使用如下代码

var MyComponent=React.createClass({/*…*/});
var myElement=;
render(myElement,document.getElementById('example');
如果你喜欢的话,还有更多细节

若要添加根据此方法已存在于页面中的iFrame元素,请执行以下操作


或者,如果您只关心历史记录中出现的上一个页面迭代,则可以实现。它确实是这样做的,虽然它也很古怪。

你可以考虑用整个iFrAME完全替换你的嵌入URL<代码> <代码>。 您可以使用如下代码

var MyComponent=React.createClass({/*…*/});
var myElement=;
render(myElement,document.getElementById('example');
如果你喜欢的话,还有更多细节

若要添加根据此方法已存在于页面中的iFrame元素,请执行以下操作


或者,如果您只关心历史记录中出现的上一个页面迭代,则可以实现。它确实做到了这一点,尽管它也很粗糙。

你能解释一下“一个页面被添加到浏览器历史记录”是什么意思吗?它是否影响前进/后退按钮?或者问题只是浏览器知道它已经存在(例如,如果您转到about:history,它可能会被列出)?后者似乎是一个功能,我想不出一个好的理由来绕过它。如果您解释这是一个问题的原因,也可能有助于我们提出替代解决方案。您能解释一下“将页面添加到浏览器历史记录”是什么意思吗?它是否影响前进/后退按钮?或者问题只是浏览器知道它已经存在(例如,如果您转到about:history,它可能会被列出)?后者似乎是一个功能,我想不出一个好的理由来绕过它。如果您解释这是一个问题的原因,也可能有助于我们提出替代解决方案。
var MyComponent = React.createClass({/*...*/});
var myElement = <iframe src="https://www.youtube.com/embed/G8KpPw303PY"></iframe>;
React.render(myElement, document.getElementById('example'));
<!-- where this is rendered 'on top of' or replacing your old video -->