#[SOLVED] Not deleting at first
35 messages · Page 1 of 1 (latest)
Maybe you can share your code or some logs?
wait I'm sahring the github repo
and also I'm sharing a video which helps to understand what is the problem
In Todos.jsx you will find the delete function
Did you confirm the API call is made when you click the button?
yes
One thing that might be the problem is to make some sort of state change after the API call. If there's no system change, there's no re-render
I print the deleted statement after the api call and its running.
and after that it reloads the page
i don't see the print statement 🧐
also it seems like the page is refreshing? 🧐
yes bcz after printing the statement page relaods itself
why?
const deleteTodoHandler = async (id) => {
try {
db.deleteDocument(
import.meta.env.VITE_APPWRITE_DATABASE_ID,
import.meta.env.VITE_APPWRITE_COLLECTION_ID,
id
);
console.log('deleted');
window.location.reload();
} catch (err) {
console.log(err);
window.location.reload();
}
};
here is the code
why are you adding the reload?
to render the list after newly add item or deleting item
i don't think that's the right approach...
I know but in the useEffect function if I gave the any payload or leave it empty it calls the function infinitely
useEffect(() => {
const loadData = async () => {
setLoader(true);
try {
const getTodos = await db.listDocuments(
import.meta.env.VITE_APPWRITE_DATABASE_ID,
import.meta.env.VITE_APPWRITE_COLLECTION_ID
);
setTodos(getTodos.documents);
} catch (err) {
console.log(err);
}
};
loadData();
setLoader(false);
}, []);
how do you know it calls the function infinitely?
what do you mean?
useEffect(() => {
const loadData = async () => {
setLoader(true);
try {
const getTodos = await db.listDocuments(
import.meta.env.VITE_APPWRITE_DATABASE_ID,
import.meta.env.VITE_APPWRITE_COLLECTION_ID
);
setTodos(getTodos.documents);
} catch (err) {
console.log(err);
}
};
loadData();
setLoader(false);
}, [todos]);
I mean this code
yes, that's causing the infinite loop. That todos at the bottom means "run this whenever todos changes" and you're changing todo in the loadData function. Does that make sense?
Yes I know but I found a solution using useReducer
Its work on the submit function and load function correctly
Now I'm implementing it on the deleting function
Thanks @dapper oracle to help me. Now it is working perfectly.