Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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传单中使用onEachCountry刷新GeoJSON choropleth?_Javascript_Reactjs_Leaflet_React Leaflet - Fatal编程技术网

Javascript 如何在React传单中使用onEachCountry刷新GeoJSON choropleth?

Javascript 如何在React传单中使用onEachCountry刷新GeoJSON choropleth?,javascript,reactjs,leaflet,react-leaflet,Javascript,Reactjs,Leaflet,React Leaflet,我对JS、React和传单还不熟悉,但我认为到目前为止我还行。 我有一个正确显示咖啡信息的屏幕。不幸的是,当我在onEachCountry内更改数据时,这些更改没有反映出来,因为这不是一个状态。也许我可以让onEachCountry循环中的每一层都成为一个状态?或者我可以在JSX中调用一些简单的刷新选项吗 我已经尝试使用onEachCountry的useEffect,我也尝试了控制台日志,数据正在更新,只是没有显示。其他传单挂钩在更改时似乎更容易更新 非常感谢您的帮助 import React

我对JS、React和传单还不熟悉,但我认为到目前为止我还行。 我有一个正确显示咖啡信息的屏幕。不幸的是,当我在onEachCountry内更改数据时,这些更改没有反映出来,因为这不是一个状态。也许我可以让onEachCountry循环中的每一层都成为一个状态?或者我可以在JSX中调用一些简单的刷新选项吗

我已经尝试使用onEachCountry的useEffect,我也尝试了控制台日志,数据正在更新,只是没有显示。其他传单挂钩在更改时似乎更容易更新

非常感谢您的帮助

import React,{useState,useffect}来自“React”;
从“react传单”导入{MapContainer,GeoJSON,TileLayer};
导入“传单/目录/传单.css”;
导入“/ChoroMap.css”;
从“./NavBarCountry”导入NavBarCountry;
//从合唱团
const ChoroMap=({国家、咖啡、onChangeLegend})=>{
const[selectedStat,setSelectedStat]=useState(“生产者”);
useffect(()=>{
onEachCountry();
},[selectedStat]);
const onProducersClick=函数(){
onChangeLegend(“制作人”);
setSelectedStat(“生产商”);
};
const onExportersClick=函数(){
onChangeLegend(“出口商”);
setSelectedStat(“出口商”);
};
const onFarmsClick=函数(){
onChangeLegend(“农场”);
setSelectedStat(“农场”);
};
函数图例(stat、comparisonArray){
如果(stat>=comparisonArray[0]){
返回“#741F”;
}else if(stat>=comparisonArray[1]&stat=comparisonArray[2]&&stat=comparisonArray[3]&stat=0&&stat{
国际单项体育联合会(国家){
//默认值
layer.options.fillOpacity=1;
layer.options.weight=0.6;
layer.options.color=“白色”;
//来自JSON的国家名称
const name=country.properties.ADMIN;
const countryObj=coffee.find((coffee)=>coffee.country==
姓名);
如果(countryObj!=null){
如果((selectedStat==“生产者”)){
layer.bindPopup(`${name}
${countryObj.production_volume}`);
const productionVol=
条带编号(countryObj.生产量);
const foundColor=图例(
生产量,
[10_000_000, 5_000_000, 2_000_000, 500_000]
);
layer.options.fillColor=foundColor;
}
else if((selectedStat==“Exporters”)){
layer.bindPopup(`${name}${countryObj.export_volume}`);
const exportVol=条带编号(countryObj.导出卷);
const foundColor=图例(
出口卷,
[10_000_000, 5_000_000, 2_000_000, 500_000]
);
layer.options.fillColor=foundColor;
}
else if((selectedStat==“Farms”)){
layer.bindPopup(`${name}${countryObj.number_of_farms}`);
常数numberOfFarms=
条带编号(countryObj.农场数量);
const foundColor=图例(
许多农场,
[5, 10, 15, 20]
);
layer.options.fillColor=foundColor;
}
console.log('onEachCountry',layer.options.fillColor)
}
}
};
返回(
);
};

导出默认ChoroMap我搞不清楚
图层
的贴花位置…您是否缺少一些代码?一个国家到底是什么?在这个代码示例中似乎没有实际声明它?运行
layer.options.fillColor=someColor
实际上不会更改颜色。您需要使用-请参阅,很抱歉,我无意中删除了示例中的一些代码。我实际上有const countryObj=coffees.find在onEachCountry中,我不知道为什么上面没有显示。const onEachCountry=(国家,层)=>{if(国家){等等。这就是图层的来源。这确实有效。我只是不能刷新。我以前使用过setStyle,它确实会刷新,但不知道如何将它应用到各个json国家。这篇setStyle文章似乎很有用,但它是JS而不是React传单。我可能可以使用useMap()对其进行调整hook.我会调查的,谢谢请编辑你的问题,包括那些代码行,这样代码块就有了所有的细节并且是连贯的。虽然
setStyle
确实是香草js,layer.options.fillColor也是。一旦你进入
onEachFeature
函数,你就已经突破了react,变成了香草传单代码(这很好)。