Задать вопрос
@Danoneko

Как переместить вызываемую функцию в useEffect?

Постоянная ошибка "React Hook useEffect has a missing dependency: 'userData'. Either include it or remove the dependency array react-hooks/exhaustive-deps"

В интернете предложили, переместить функцию внутрь хука. Я новичок в react, и не знаю как это исправить, если функция handleChange вызывается ниже. Подскажите пожалуйста как это сделать?

import data from "../Data/data";

const userData = data;
const [users, setUsers] = useState([]);
const [selectedUser, setSelectedUser] = useState([]);

  useEffect(() => {
    setUsers(userData);
  }, []);

  // console.log('selectedUser);


  const handleChange = (e, data) => {
    const { name, checked } = e.target;
    if (checked) {
      if (name === "allSelect") {
        setSelectedUser(users);
      } else {
        setSelectedUser([...selectedUser, data]);
      }
    } else {
      if (name === "allSelect") {
        setSelectedUser([]);
      } else {
        let tempuser = selectedUser.filter((item) => item.id !== data.id);
        setSelectedUser(tempuser);
      }
    }
  };

return(
<input
                    type="checkbox"
                    className="form-check-input"
                    name="allSelect"
                    // allSelect selected when both length equal
                    // slecteduser === allUser
                    checked={selectedUser?.length === users?.length}
                    onChange={(e) => handleChange(e, users)}
                  />
)
  • Вопрос задан
  • 176 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
если data просто импортируется, то выкинуть useEffect и написать
const [users, setUsers] = useState(data);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@sevenov_elevenov
Это не совсем ошибка, это ворнинг линтера, он говорит что для useEffect нужно указать зависимость от userData:
useEffect(() => {
    setUsers(userData);
  }, [userData]);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы