Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJs状态为更改,但iframe未更改_Javascript_Reactjs - Fatal编程技术网

Javascript ReactJs状态为更改,但iframe未更改

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 : '' } }

我是新手,我想在应用程序的每个菜单上显示不同的pdf文件 这是我的密码

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