import React, { useState, useCallback } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
const CreateCriteria = () => {
const [criteria, setCriteria] = useState({})
const onClose = useCallback((key) => {
delete criteria[key]
setCriteria(criteria)
}, [criteria])
const onClick = useCallback(() =>{
const key = Math.random()
setCriteria({
...criteria,
[key]: <div onClick={() => onClose(key)}>{
key
}</div>
})
}, [criteria, onClose])
return (
<div>
{
Object.keys(criteria).map((entity) => criteria[entity])
}
<button onClick={onClick}>
add
</button>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<CreateCriteria />, rootElement);
Представьте, что у меня есть этот фрагмент кода.Когда я нажимаю кнопку add
, я хочу получить новые элементы в DOM
и в объекте критериев.Я делаю это, генерируя новый номинал (key/value
) в объекте критериев, а затем анализирую эти новые данные в DOM.Я делаю это потому, что хочу также иметь возможность удалить этот объект из DOM, нажав на этот объект.Когда я нажимаю на элементы от последнего к первому (снизу вверх), то это работает нормально, но, например, если у меня есть 3 элемента 1,2,3, и я нажимаю на 2, то это также удаляет 3, и я могуне понимаю, почему это происходит.Вы можете использовать CodeSandbox
для проверки:
https://codesandbox.io