// Parent / Container
const [itemID, setItemID] = useState(null);
const handleMenuOpen = (id) => (e) => {
setAnchorEl(e.currentTarget); // for menu placement
setItemID(id);
};
const handleItemDelete = () => {
dispatch(deleteItem(itemID));
};
<List>
<ListRow handleMenuOpen={handleMenuOpen} />
<Menu handleItemDelete={handleItemDelete} itemID={itemID} />
</List>;
// List Row
<Button onClick={handleMenuOpen(item.id)} />;
// Menu
<MenuItem onClick={() => handleModalOpen(itemID)} />;
<MenuItem onClick={() => handleItemDelete()} />;
编辑按钮正常工作,但无论我如何尝试,都不能从列表项的onClick中让setItemID起作用。它总是作为null的初始值出现。我在函数参数中记录了ID,但setState钩子没有起作用。
我尝试将useState放在列表项上,并通过useContext传递ID,但在调用handleItemDelete时出现未定义。
我尝试使用子代上的ref来从父级获取ID,结果也是未定义的。
我想不到如何使用useEffect来检查handleMenuOpen参数的更改。
我没办法了,请问有人知道问题出在哪里,以及如何解决吗?