0

检查了所有相关问题,不幸的是找不到与我的问题相似的问题。

我有一组用户对象,我将它们映射到一个表中。每个用户的 ID 旁边是一个删除按钮,当按下它时,我会触发一个事件以从数组中删除用户。

我尝试向按钮添加第二个 onClick 函数,首先声明用户对象是什么,然后触发删除,我还尝试了 e.stopPropagation() 认为它可能没有正确冒泡。

const UsersTable = ({ users, setUsers, callback }) => {
    const [selectedUser, setSelectedUser] = useState(null);
    const removeUser = user => {
        setSelectedUser(user)
        callback(user)
    };

    return (
        {
            users.map(user => 
                <div className="userRow">
                    <div className="deleteButton" onClick={()=> removeUser(user)}>
                        {user.name}
                    </div>
                </div>
            )
        }
    )
};

如果我使用定义的用户运行回调,它会正常工作。但是,当使用它时,我第一次单击该按钮时,它给了我一个错误,说用户不能为空,并且在第二次按下时,它会正确触发。有什么我做错了吗?为什么第一次按下它就不能正常工作。

4

1 回答 1

0

我认为这可能是一个同步问题。callback不要在里面跑removeUser,而是试着把它放进去useEffecthttps://reactjs.org/docs/hooks-effect.html

于 2019-11-11T16:59:08.367 回答