#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, она будет дублировать запись в моем массиве служб вместо того, чтобы удалять ее, если она уже существует. Любая помощь была бы здесь очень признательна.