Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro no TimeOut

Olá pessoa, tudo bem?

Referente ao curso: React testando seus componentes. Aula 002

Quando implemento no setTimeOut no Hook para remover a messagem de erro ele não remove o erro e o e a tag p do role="alert"

import { useSetRecoilState, useRecoilValue } from 'recoil';
import { nameList, erroState } from '../atom';

export const AddNameList = () => {
    const event = useSetRecoilState<string[]>(nameList);
    const lista = useRecoilValue<string[]>(nameList);
    const setError = useSetRecoilState<string>(erroState);

    return ( name: string ) => {
        if(lista.includes(name)){
            setError('Nomes duplicados não são permitidos!');

           //AQUI NAO EXECUTA
            setTimeout(() => {
                setError("")
            }, 5000)
            return            
        }
        return event( ( item ) => [...item, name])
    }
}

Imagem do teste

o que está errado? porque o componente de alert do erro não é removido após 5000 e continua retornando o componente com role?

Repositório publico:

https://github.com/xing-wang-kai/EXERCICIO_TESTREACT

2 respostas
solução!

Salve, Deusnir!

Estava aqui olhando seu código, e o problema está na definição do seu átomo:

export const erroState = atom<string>({
    key: 'erroState', // falta preencher a key desse atom :)
    default: ''
})

Com o ajuste acima, testei aqui e funcionou. Dei também uma olhada no seu código, e acho que vale a pena ficar atento ao nomes dos hooks customizados. Seguindo a documentação do React, hooks customizados deveriam começar com a palavra use.

Bons estudos!

Muito Obrigado!

Fico grado pelo esclarecimentos, realizei a alteração da Key e adicionei os nomes e deu certo. Modifiquei o código e segui as orientações.

Muito obrigado pelo Apoio e suporte.