Вам не нужен обработчик для каждого элемента в массиве. Все, что вам нужно, это иметь один обработчик, которому вы передаете идентификатор, который можно получить из события, если вы добавите идентификатор в элемент li
function ItemList({items}) {
const [isDropdownExpanded, setIsDropdownExpanded] = useState(null);
const itemClickHandlers = useCallback((e) => {
const id = e.currentTarget.id;
setIsDropdownExpanded(prev => (prev != id ? id: null));
}, [])
return (
<ul>
{items.map(item =>
<li key={item.id} id={item.id} onClick={itemClickHandler}>
<Item name={item.name} isDropdownExpanded={isDropdownExpanded === item.id}/>
</li>
)}
</ul>
);
}
Почему кто-то не сказал мне, что я полный нуб? Все, что мне нужно было сделать, это скопировать каталог dateutil
в какое-нибудь место на моем пути к Python, и все было хорошо.
Похоже, в setup.py используется easy_install (т.е. setuptools
). Просто установите пакет setuptools , и все будет готово.
Чтобы установить setuptools в Python 2.6, см. Ответ на этот вопрос .
Использование ] setup
из distutils.core
вместо setuptools
в setup.py тоже работал у меня:
#from setuptools import setup
from distutils.core import setup