import React, { useEffect, useRef, useState } from "react"; import { connect, useDispatch } from "react-redux"; import { actionFindUsers } from "../actions"; import { CSearchAvatar } from "../components/Avatar"; import Button from "react-bootstrap/esm/Button"; import { Link } from "react-router-dom"; const useDebounce = (cb, depArray, delay, onAdd) => { let timeoutRef = useRef(); useEffect(() => { clearInterval(timeoutRef.current); timeoutRef.current === undefined ? (timeoutRef.current = -1) : (timeoutRef.current = setTimeout(cb, delay)); }, depArray); }; const SearchByLogin = ({ onGetUser, foundUsers, onChange }) => { const [login, setLogin] = useState(); useDebounce(() => onGetUser(login), [login], 2000); const newUserId = (user) => { onChange(user) } return (
setLogin(e.target.value)} />
{foundUsers ? foundUsers.map((user) => { return (
{user?.avatar !== null ? ( ) : (
)}
{user?.login ? user.login : "anon"}
); }) : null}
); }; export const CSearchByLogin = connect( (state) => ({ foundUsers: state?.promise?.findUsers?.payload, // state: state }), { onGetUser: actionFindUsers, } )(SearchByLogin);