Javascript ReactJs状态为更改,但iframe未更改
我是新手,我想在应用程序的每个菜单上显示不同的pdf文件 这是我的密码Javascript ReactJs状态为更改,但iframe未更改,javascript,reactjs,Javascript,Reactjs,我是新手,我想在应用程序的每个菜单上显示不同的pdf文件 这是我的密码 class document extends React.Component { constructor(props){ super(props); this.state = { folder_name: this.props.params.folder_name, pdf_src : '' } }
class document extends React.Component {
constructor(props){
super(props);
this.state = {
folder_name: this.props.params.folder_name,
pdf_src : ''
}
}
menuClick(menu_name){
var src ='';
if(menu_name == 'Product'){
src = "assets/file/Product.pdf";
}else if(menu_name =='leadership'){
src = "assets/file/Leadership.pdf";
}else if(menu_name =='motivation'){
src = "assets/file/Motivation.pdf";
}
this.setState({
folder_name : menu_name,
pdf_src : src
})
}
render(){
console.log(this.state.pdf_src);
let choosen_menu = this.state.folder_name || '';
let pdf = this.state.pdf_src || '';
let list_menu = [];
switch(choosen_menu){
case 'product' :
titleMenu = 'Product';
list_menu.push(<iframe src ={pdf} width='90%' height="800px" allowfullscreen></iframe>);
break;
case 'leadership' :
titleMenu = 'Leadership';
list_menu.push(<iframe src ={pdf} width='90%' height="800px" allowfullscreen></iframe>);
break;
case 'motivation' :
titleMenu = 'Motivation';
list_menu.push(<iframe src ={pdf} width='90%' height="800px" allowfullscreen></iframe>);
break;
default :
list_menu.push(
<label> not found</label>
);
break;
}
return (
<div className="panel-body boxShadow">
<div className="row loadresult">
<div className="col-xs-12">
{list_menu}
</div>
</div>
</div>
);
}
}
类文档扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
文件夹名称:this.props.params.folder\u名称,
pdf\u src:'
}
}
菜单单击(菜单名称){
var src='';
如果(菜单名称==“产品”){
src=“assets/file/Product.pdf”;
}else if(菜单名称=='leadership'){
src=“assets/file/Leadership.pdf”;
}else if(菜单名称=='motivation'){
src=“assets/file/Motivation.pdf”;
}
这是我的国家({
文件夹名称:菜单名称,
pdf_src:src
})
}
render(){
log(this.state.pdf\u src);
让我们选择|menu=this.state.folder|u name | |“”;
设pdf=this.state.pdf|src | |“”;
让列表_菜单=[];
开关(选择菜单){
案例“产品”:
titleMenu=‘产品’;
list_menu.push();
打破
“领导力”案例:
标题菜单=‘领导力’;
list_menu.push();
打破
“动机”案例:
标题菜单=‘动机’;
list_menu.push();
打破
违约:
list\u menu.push(
找不到
);
打破
}
返回(
{列表\菜单}
);
}
}
我尝试显示pdf_src的状态,结果是当我单击菜单时,控制台上显示的状态是更改,但iframe仍然显示第一次打开的pdf
有人能帮我解决这个问题吗,为什么当状态改变时,iframe没有改变
感谢您的帮助:)最后我找到了答案,如果您想在同一组件中重新渲染iframe,您必须为每个pdf文件添加不同的密钥,在我的情况下,我使用src作为密钥
<iframe key ={pdf} src ={pdf} width='90%' height="800px" allowfullscreen></iframe>
我认为当关键点更改时,iframe将重新渲染。
谢谢每次渲染后,我建议删除所有推到列表菜单的内容,然后再推到它。对不起,是我的错,我想我在整理代码时无意中删除了该部分,谢谢@MohitTilwani