javascript - 直到 mouseEnter 事件才加载简单的 React Map 层
问题描述
地图渲染和颜色填充也会发生,但只有当鼠标进入事件发生时。如何在加载时触发它?我正在使用 react-simple-maps,JSON 数据是有效的,因为它在鼠标进入时加载地图。这是源代码 - Github
const [tooltipContent, setTooltipContent] = useState("");
const colorScale = scaleQuantile()
.domain(props.data.map((d) => d.value))
.range(COLOR_RANGE);
const onMouseEnter = (geo, current = { value: "NA" }) => {
return () => {
setTooltipContent(`${geo.properties.name}: ${current.value}`);
};
};
const onMouseLeave = () => {
setTooltipContent("");
};
return (
<div>
<ReactTooltip>{tooltipContent}</ReactTooltip>
<ComposableMap
projectionConfig={PROJECTION_CONFIG}
projection="geoMercator"
width={700}
height={600}
data-tip=""
>
<Geographies geography={INDIA_TOPO_JSON}>
{({ geographies }) =>
geographies.map((geo) => {
const current = props.data.find((s) => {
return s.id === geo.id;
});
return (
<Geography
key={geo.rsmKey}
geography={geo}
fill={current ? colorScale(current.value) : DEFAULT_COLOR}
style={geographyStyle}
onMouseEnter={onMouseEnter(geo, current)}
onMouseLeave={onMouseLeave}
/>
);
})
}
</Geographies>
</ComposableMap>
</div>
);
}
解决方案
我不小心直接改变了状态,并且没有正确使用 useEffect 钩子
推荐阅读
- java - 使用spring xml创建bean
- authentication - 我将如何在 wso2is 5.8 版中实现无密码身份验证
- excel - 对于每个循环,将 Excel 文件作为 Word 中的序列字母表导入
- javascript - 为什么我在 react-native 中会出现这个 firebase 错误?
- python-3.x - __init__() 接受 2 个位置参数,但给出了 3 个
- python - 使用 Python 获取 xml 中每种类型的描述列表
- shell - FreeBSd rc.d 源另一个文件
- python - 在 python 中使用请求库时使用指纹/指纹验证远程服务器证书
- go - go 获取 golang 包并自动运行脚本
- ios - Cocoapod 公共分发技术