I have a question about useEffect. My useEffect is not fetching the data the first time, I have to switch route for it to have the data I needed
const Comments = ({ ...rest }) => {
  const theme = useTheme();
  const classes = useStyles({ theme });
  const [users, setUsers] = useState([]);
  const { push } = useHistory();
  const { token, loading } = useContext(AuthContext)
  const dispatch = useDispatch();
  const allUsers = useSelector(state => state.allUsers);
  const comments = useSelector(state => state.listCommentsByBookId);
  const listBooks = useSelector((state) => state.userListBooks);
  const isFetching = useSelector((state) => state.isFetching);
  const [stateReady, setReadyForRender] = useState(false)
  const redirectTo = ( rowData ) => {
    push({
      pathname: ROUTE.USERS_DETAILS,
      user: rowData
    });
  }
  const options = {
    filterType: 'checkbox',
    selectableRowsHeader: false,
    selectableRowsHideCheckboxes: false,
    selectableRowsOnClick: false,
    onRowClick: redirectTo,
  };
  const getAllComments = async () => {
    var allusersId = [];
    //get all ids
    await allUsers.map((user) => {
      allusersId.push(user.uid);
    })
    //get all books from users 
    await allusersId.map(async (id) => {
      await dispatch(getUserListBooks(apiURL + `api/bdd/userListBooks/${id}`, token))
    })
    var listArray = [];
    //filter the array and delete empty rows
    listArray.push(listBooks);
    var newArray = listArray.filter(e => e);
    
    //map every user and stock the list of books in string 
    await newArray.forEach(async (book)=> {
      await book.map(async (book) => {
        await dispatch(getCommentsByBookId(apiURL + `api/bdd/ratingByBook/${book.id}`, token));
      })
    })
    setReadyForRender(true)  
  }
  
  useEffect(() => {
    console.log('is fetching', isFetching)
    if(comments.length === 0) {
      getAllComments();
    }
  }, [stateReady])
  console.log('COM', comments);
  return (
    <div>
     {stateReady && 
      <Card>
        <Box className={classes.tableContainer} sx={{ minWidth: 1050 }}>
          <MUIDataTable
            data={comments}
            columns={columns}
            options={options}
          />
        </Box>
      </Card>}
    </div>
  );
};
Why? It might be related to async await but I'm stuck here.
 
     
     
     
     
     
    