#react-native #react-hooks #recoiljs
Вопрос:
Когда я использую useRecoilValue, я получил сообщение об ошибке Недопустимый вызов соединения. Я неправильно использую эти крючки? тогда как я могу решить эту проблему?
List.fn.js
import { Alert, AsyncStorage } from "react-native";
import { useRecoilValue } from "recoil";
import { listDataViewer } from "../State";
const ListFunction = (listName) => {
const listID = Date.parse(new Date());
const newListData = {
"ID": listID,
"Name": listName
};
const list = useRecoilValue(listDataViewer);
if (JSON.stringify(list) == "null"){
try {
AsyncStorage.setItem('list', JSON.stringify([list]));
} catch (error) {
console.log(error);
}
} else {
try {
AsyncStorage.setItem('list', JSON.stringify([newListData, ...list]));
} catch (error) {
console.log(error);
}
}
}
}
Ответ №1:
Вы можете использовать крючки только внутри компонента React, но вы вызываете его внутри обычной функции. React не может обрабатывать крючки за пределами функциональных компонентов. Для получения дополнительной информации о правилах крючков ознакомьтесь с официальными документами: https://reactjs.org/docs/hooks-rules.html#only-call-hooks-from-react-functions