新人求助Jsx基础问题 两层for循环编译语法错误相关问题

#1

代码

const loop2=(host)=>
        {
        var doms1=[];

        for (var i=0; i<host.length; i++){
            dom1.push(<SubMenu title={<span><Icon type="laptop" /><span>vBox</span></span>}>)

         for(var j=0;j<host.vms_info.length; j++)
        {
            doms1.push(<Menu.Item   key={j.toString()}> <p onClick={this.sendRouter.bind(this,host.hid,host.vms_info[j].Uuid)}>{host.vms_info[j].Name}</p> </Menu.Item>);
        }

        doms1.push(</SubMenu>)


}
        return doms1;
    };
#2

这个在哪里定义了

#3

就是在函数loop2中定义的

#4

在loop2里就看到 doms1 这个变量呢

dom1是在loop2外面定义的

#5

dom1只在loop2中可见,没有在其他地方定义

#6

loop2是定义在render中的一个函数,我用各种方式去测试这个问题,它似乎在告诉我 jsx不认识第二层循环的for,我尝试着把第二层循环套上一对大括号,但没有解决问题

#7
const loop2=(host)=>{
    var doms1=[];
    for (var i=0; i<host.length; i++){
     const viResult= host.vms_info.map((vi,index)=>{
	   return (<Menu.Item   key={index}> 
		  <p onClick={this.sendRouter.bind(this,host.hid,host.vms_info[j].Uuid)}>{host.vms_info[j].Name}</p> 
		</Menu.Item>);
	 });
     
     doms1.push(</SubMenu title={'<span><Icon type="laptop" /><span>vBox</span></span>'}>)
	   {viResult}
	 </SubMenu>);
  }
  return doms1;
};

试试这样可以不?

1 Like
#8

谢谢您,这个问题已经解决了,大神能指导一下这是为什么吗?

#9

jsx语法,还是有点问题。这个可不像 html那样,将字符串拼接就可以。要嵌入另一个不确定的内容的话,用

{ // 动态 [].map((a,index)=> .... ) }
2 Likes
#10

尽量用 map 吧。。

1 Like