проверка того, включает ли часть состояния объект при переключении между компонентами

#javascript #reactjs #use-state

Вопрос:

У меня есть мастер форм, в котором у меня есть часть состояния, которая сначала содержит пустой массив служб. В определенном компоненте мастера пользователь может добавлять/удалять службы по щелчку мыши в свой массив служб.

 const handleToggle = (value) =gt; () =gt; {  if (state.services.includes(value)) {  setState({  ...state,  services: state.services.filter((service) =gt; service !== value)  })  } else {  setState({  ...state,  services: [...state.services, value]  })  }  };  
 lt;List className={classes.root}gt;  {responseData.map((entry) =gt; (  lt;ServiceListItemView  key={entry.id}  service={entry}  handleToggle={handleToggle}  state={state}  /gt;  ))}  lt;/Listgt;  

вот мой компонент serviceListView

 return (  lt;React.Fragmentgt;  lt;HtmlTooltip  enterNextDelay={500}  title={  lt;div className='LocationFormPopup'gt;  lt;h3gt;{service.name}lt;/h3gt;  lt;pgt;{service.summary}lt;/pgt;  lt;/divgt;  }  gt;  lt;div  id='hover-notchecked'  style={state.services.includes(service) ? divStylesChecked : divStyles}  onClick={handleToggle(service)}gt;  lt;h3gt;{state.services.includes(service) ? lt;span style={spanStyles}gt;amp;#10003;lt;/spangt; : null}{service.name}lt;/h3gt;  lt;/divgt;  lt;/HtmlTooltipgt;  lt;/React.Fragmentgt;  ); }   

функция handleToggle работает, когда я нахожусь в компоненте. Если я перейду на другую страницу мастера, а затем вернусь к компоненту, который выбирает службы, я увижу, что массив служб по-прежнему правильно заполнен в моих журналах, но все мои стили возвращают значение false. и если я активирую функцию handleToggle, она будет дублировать запись в моем массиве служб вместо того, чтобы удалять ее, если она уже существует. Любая помощь была бы здесь очень признательна.