Я пишу небольшое приложение dataviz, мой график в основном работает, поэтому я приступил к работе над частью React
, подключив магазин, чтобы я мог выбрать регионы для отображения на моем графике.
Тем не менее, при выборе / отмене выбора региона предыдущее состояние компонента не разрушается, поэтому новое, так же мало места для рисования.
Описание:
- Верхний компонент - это тот, который появляется при загрузке приложения
- Нижний компонент - это тот, который появляется при изменении состояния
Я ожидал, что верхний компонент исчезнет при изменении состояния.
<VisibleEvents />
компонент контейнера (источник)
Извлечение данных и подключение компонента <Timeline>
к хранилищу Redux
# … import and helpers
const timelineEvents = buildD3Data(data as TimelineEvents)
const getVisibleEvents = (events: TimelineEvents, regions: Regions) => {
const visibileEvents = getEvents(
timelineEvents.sort(sortByRegion),
regionsWithEvents
)
return visibileEvents
}
const mapStateToProps = (state: RootState) => ({
regions: getSelectedRegions(state),
events: getVisibleEvents(timelineEvents, getSelectedRegions(state)),
})
const connector = connect(mapStateToProps, {})
export default connector(Timeline)
<Timeline />
Компонент (источник)
import React, { useEffect, useRef } from 'react'
import { Regions } from '../types/region'
import { TimelineEvents } from '../types/timelineEvent'
import drawGraph from './drawGraph'
interface TimelineProps {
events: TimelineEvents
regions: Regions
}
const Timeline = ({ events, regions }: TimelineProps) => {
const graph = useRef(null)
useEffect(() => drawGraph(graph, regions, events))
return <div ref={graph} data-testid='chart'></div>
}
export default Timeline
Событие отправки, когда новый регион un / selected:
const mapStateToProps = (state) => ({
regions: getSelectedRegions(state),
})
const mapDispatchToProps = (dispatch) => {
return {
selectRegion: (region) => dispatch(selectRegion(region)),
unSelectRegion: (region) => dispatch(unSelectRegion(region)),
}
}
const connector = connect(mapStateToProps, mapDispatchToProps)
export default connector(RegionPicker)
Вопрос
Почему компонент старого состояния все еще присутствует? Как мне его уничтожить?
Связано