Я создаю компонент, который записывает время, введенное для действия, и задачу для этого действия.
Кнопка «Удалить» (X слева) не работает должным образом, то есть удалить единственный компонент weekPanel, к которому принадлежит кнопка, из массива weekPanels. В настоящее время он удаляет панель, на которую нажали, но также удаляет все следующие панели.
У меня есть демонстрация здесь: https://jscomplete.com/playground/s409549
Состояние компонентов:
const [weekId, setWeekId] = useState(100);
const [weekPanels, setWeekPanels] = useState([]);
const [monday, setMonday] = useState(0);
const [tuesday, setTuesday] = useState(0);
const [wednesday, setWednesday] = useState(0);
const [thursday, setThursday] = useState(0);
const [friday, setFriday] = useState(0);
const [saturday, setSaturday] = useState(0);
const [sunday, setSunday] = useState(0);
Кнопка «Добавить действие / задачу» добавляет компонент WeekPanel в состояние weekPanels. Затем обновляется weekId.
const addWeekPanel = () => {
setWeekPanels(weekPanels.concat(
<WeekPanel
key={weekId}
weekId={weekId}
weekPanels={weekPanels}
activitiesList={props.activitiesList}
tasksList={props.tasksList}
monday={monday}
tuesday={tuesday}
wednesday={wednesday}
thursday={thursday}
friday={friday}
saturday={saturday}
sunday={sunday}
handleHoursChange={handleHoursChange}
handleWeekPanelDelete={handleWeekPanelDelete}
activityTask={{}}
/>));
setWeekId(weekId + 1);
}
, который выполняет работу в достаточной степени .
Вот функция удаления: (журналирование удалено)
const handleWeekPanelDelete = deleteId => {
const newWeekPanels = weekPanels.filter(week => week !== deleteId);
setWeekPanels(newWeekPanels);
}
Это также имеет странное взаимодействие, то есть, когда console.log выходит из состояния на разных указывает, что в журнале показан результат удаления до достижения weekPanels.filter ().