Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

66
Visualizações
Why react hook usestate show an error message

I have an useState, but when add user rendered, React show an error. I dont know why React show an error. it seems valid code

const [users, setUsers] = useState([]);

I have an error on delete function:

function App() {
    const [users, setUsers] = useState([]);

    const userAddHandler = input => {
        setUsers(prevState => {
            return [...prevState, input]
        })
    }

    const deleteUserHandler = userId => {
        setUsers(userData => {
            userData.filter(user => {
                return userId !== user.id
            })
        });
    }

    return (
        <div>
            <AddUser onAddUser={userAddHandler} />
            <UserLists users={users} onDelete={deleteUserHandler} />
        </div>
    );
}

export default App;

An error Message like this:

TypeError: userData is undefined
deleteUserHandler/<
src/App.js:17

  14 | 
  15 | const deleteUserHandler = userId => {
  16 |     setUsers(userData => {
> 17 |         userData.filter(user => {
  18 | ^            return userId !== user.id
  19 |         })
  20 |     });

when i return it, it show another error message:

Cannot update a component (`App`) while rendering a different component (`UserLists`). To locate the bad setState() call inside `UserLists`

My userLists is like this:

const UserLists = (props) => {
    return (
        <ul>
            {props.users.map((user) => {
                return (
                    <div
                        className={styles.userLists}
                        key={user.id}
                        onClick={props.onDelete(user.id)}
                    >
                        <Card>
                            <li>{`${user.username} (${user.age} Years Old)`}</li>
                        </Card>
                    </div>
                );
            })}
        </ul>
    );
};

export default UserLists;
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

You are not returning anything so it's undefined, need to return the data after filter.

const deleteUserHandler = userId => {
        setUsers(userData => {
            return userData.filter(user => {
                return userId !== user.id
            })
        });
about 4 years ago · Juan Pablo Isaza Relatório

0

const deleteUserHandler = userId => {
    const newData = userData.filter(user => userId !== user.id);
    setUsers(newData);
}

This is maybe the best way.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda