Estou apenas começando a usar o React, então, tenham paciência comigo.
Tenho um componente React pai, Usuários, que contém outro componente React como este:
<UsersTable onSelectRecord={onSelectRecord} />
'onSelectRecord' é uma função definida em Usuários.
UseraTable é definido como:
const UsersTable = props => {...}
e seu gancho useEffect é implementado como:
useEffect(() => {
fetchUsers(1);
}, [props.updateTime]);
O que entendi disso é que o hook useEffect é executado sempre que a propriedade updateTime é alterada.
Mas em Usuários, não vejo nenhuma propriedade desse tipo sendo passada.
Então como isso funciona?
Como updateTime não está sendo passado como uma propriedade para UsersTable, o useEffect só será executado quando o componente for montado e não depois, porque não há nenhuma alteração em updateTime.
Veja o que está acontecendo:
O useEffect em UsersTable depende de props.updateTime. Ele será executado sempre que updateTime mudar.
No componente Usuários, você está apenas passando onSelectRecord para UsersTable:
Como updateTime não é passado, props.updateTime é indefinido. O useEffect será executado uma vez quando o componente for montado, mas não será executado novamente porque undefined não está mudando. Se você quiser que o useEffect seja executado com base em updateTime, você precisa passá-lo de Users. Caso contrário, ele será executado apenas na renderização inicial.