Функция React useEffect Не Работает Должным Образом

#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.