#reactjs #user-interface #mapbox #use-effect #mapbox-gl-js
Вопрос:
Я пытаюсь заставить окно появиться в приложении MapboxGL. Большая часть приложения построена с использованием React. Я хочу, чтобы функция useEffect() вызывалась только один раз, поэтому я добавил [] в качестве второго параметра в конце функции по предложению других вопросов на этом форуме. К сожалению, поле больше не отображается на карте, поэтому кажется, что функция больше не вызывается и всегда по умолчанию используется второй параметр. Почему это происходит и что я могу сделать, чтобы исправить эту проблему?
React.useEffect(() => {
if(props.show) {
console.log(props);
var northEast = [131.308594, 46.195042];
var southEast = [117.597656, 8.233237];
var southWest = [79.101563, 32.842674];
var northWest = [86.847656, 44.715514];
// Add bounding box to the map
// Defines bounding box
globalMap.addSource('newroute', {
'type': 'geojson',
'data': {
'type': 'Feature',
'properties': {},
'geometry': {
'type': 'LineString',
'coordinates': [
northEast, southEast, southWest, northWest, northEast
]
}
}
});
// Draws bounding box
globalMap.addLayer({
'id': 'newroute',
'type': 'line',
'source': 'newroute',
'layout': {
'line-join': 'round',
'line-cap': 'round'
},
'paint': {
'line-color': '#ff0000',
'line-width': 5
}
});
}
}, []);
Комментарии:
1. Является ли реквизит.шоу правдой? Вы получили сообщение на консоли? Вы получаете сообщение, если выводите консоль за пределы условия if?
2. @tarmes по неизвестной мне причине добавление второго параметра делает опору ложной
3. Нам нужно больше кода
4. откуда берется реквизит ? есть ли шанс, что ваш реквизит.шоу изменится с ложного на истинное ? . Если да, то вам нужно добавить это в качестве зависимости к вашему эффекту использования .
5. @Shyam это приходит из поисковой формы. Когда кнопка поиска нажата, я хочу, чтобы она запускала функцию useEffect.