Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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 React在控制台中显示值,但不呈现它们_Javascript_Reactjs_Antd - Fatal编程技术网

Javascript React在控制台中显示值,但不呈现它们

Javascript React在控制台中显示值,但不呈现它们,javascript,reactjs,antd,Javascript,Reactjs,Antd,我正试图根据另一个选择加载一个选择的选项。我从数组中提取数据(以后会有更多数据) 我的问题是无法渲染第二个选择。我正确过滤了数据,但没有添加选项。在代码的两个“console.log”中,您可以看到我在一旁进行了注释,结果显示在控制台中 知道我失败了什么吗?我是react的新手。如果代码非常糟糕,我道歉!欢迎任何帮助 另外,我不知道在这种情况下是否有什么不同,但我使用的是“蚂蚁设计” import React,{useState}来自“React”; 从“antd”导入{Row,Col,Form

我正试图根据另一个选择加载一个选择的选项。我从数组中提取数据(以后会有更多数据)

我的问题是无法渲染第二个选择。我正确过滤了数据,但没有添加选项。在代码的两个“console.log”中,您可以看到我在一旁进行了注释,结果显示在控制台中

知道我失败了什么吗?我是react的新手。如果代码非常糟糕,我道歉!欢迎任何帮助

另外,我不知道在这种情况下是否有什么不同,但我使用的是“蚂蚁设计”

import React,{useState}来自“React”;
从“antd”导入{Row,Col,Form,Select,Input};
导出默认功能SelectPetZone(道具){
const{publicationData,setPublicationData}=props;
const{Option}=Select;
常数arrayZones=[
{
部门名称:“蒙得维的亚”,
邻居:['Centro'、'Cordón'、'Flor de Maroñas'、'Manga']
},
{
部门名称:“Canelones”,
邻居:['Las Piedras'、'El Dorado'、'Progreso'、'La Paz']
}
];
常量选项部门=[];
const[optionsNeighborary,setoptionsNeighborary]=useState([]);
用于(阵列天线的常数项){
选项departments.push({item.departmentName});
}
常数=e=>{
//设置部门
setPublicationData({…publicationData,部门:e});
//负荷邻域
对于(数组的常数i){
如果(e==i.部门名称){
对于(i.邻域的常数j){
控制台日志(j);
setoptionsNeighborary(…optionsNeighborary,{j});
}            
}
}
}
返回(
{optionsDepartments}
setPublicationData({…publicationData,邻域:e})值={publicationData.Neighborary}>
{optionsNeighborary}
)
}

在react中,我们有一个叫做 首先,

然后改变

const optionsNeighborhood = [];
        for(const i of arrayZones) { 
            if(e === i.departmentName) {
                for(const j of i.neighborhood) {  
                    console.log(j); // ==>  Print the correct data                  
                    optionsNeighborhood.push(j);
                }            
            }
        }

然后改变

const optionsNeighborhood = [];
        for(const i of arrayZones) { 
            if(e === i.departmentName) {
                for(const j of i.neighborhood) {  
                    console.log(j); // ==>  Print the correct data                  
                    optionsNeighborhood.push(j);
                }            
            }
        }

for(数组的常数i){
如果(e==i.部门名称){
对于(i.邻域的常数j){
console.log(j);//=>打印正确的数据
setoptionsNeighborary([…optionsNeighborary,j]);
}            
}
}

很好!我明白了。有没有办法用useState“模拟”推送?它只添加数组的最后一项。我根据你的评论编辑了我的代码。你可以通过连接数组来模拟推送。我编辑了我的答案,将其包括在内:``setoptionsNeighborary([…optionsNeighborary,j]);```它将j和optionsNeighboratory添加到一起虽然我没有让它正常工作(选择继续只加载一项),但我会将答案标记为正确,因为最初的问题是没有呈现选项。我想我会尝试用一个过滤器和一个地图来代替FOR。谢谢你的帮助!编辑:因为我是Stackoverflow新手,所以我不能给它+1
        for(const i of arrayZones) { 
            if(e === i.departmentName) {
                for(const j of i.neighborhood) {  
                    console.log(j); // ==>  Print the correct data                  
                    optionsNeighborhood.push(j);
                }            
            }
        }