[英]stay in active button when click on it in react js ( functional component )
[英]Functional component event is still active when state is toggled - REACT MAPBOX
我正在尝试构建一个应用程序,您可以通过单击导航项来切换效果。
在导航项目上,我有一个切换状态的事件监听器
const [marker, setMarker] = useState(false);
onClick={() => setMarker(!marker)}
这个想法是当它设置为true时,你可以点击地图来设置一个航点。 当它为假时,单击会执行默认行为。
我尝试使用这样的 if 语句
if (marker) {
map.current.on('click', (e) => {
new mapboxgl.Marker().setLngLat(e.lngLat).addTo(map.current);
// Create a new marker.
});
}
无论状态是真还是假,您仍然可以在第一次切换后放置一个航点。
有人可以告诉我我在这里缺少什么吗? 我知道这很愚蠢。
当我开始使用 React Hooks 时,我也遇到了同样的问题! 不用担心,那是因为您没有删除为map
Ref 添加的click
事件的代码! 所以你只需要清理地图对象的click
事件!
useEffect(() => {
function clickHandler(e) {
new mapboxgl.Marker().setLngLat(e.lngLat).addTo(map.current);
// Create a new marker.
}
if (marker) {
map.current.on('click', (e) => {
clickHandler(e)
});
}
return () => {
map.current.removeEventListener('click', clickHandler)
}
}, [marker]);
请尝试这种方式..祝你好运..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.