我已经阅读了使用useffect的reactjs中的一些良好实践.我有一种情况,我分离了我的函数来获取数据,并在useEffect钩子上调用它.在这种情况下,我怎样才能实现一些清理功能?
我见过一些像这样的useEffect清理:
useEffect(() => {
let isActive = true;
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then((response) => response.json())
.then((data) => {
if (isActive) {
setTodo(data);
}
})
.catch((error) => console.log(error.message));
return () => {
isActive = false;
};
}, []);
从上面的示例中可以看出,fetch函数在useffect中,如果出现这种情况,我该如何执行一些清理:
const getTodos = async () => {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1');
const todos = await response.json();
if(todos) {
setTodos(todos);
}
}catch(e) {
console.log(e);
}
}
useEffect(() => {
let mountedTodos = true;
getTodos();
return () => {
mountedTodos = false;
}
},[])