'how to prevent getting multiple responses in Axios react native?
I want to get data from database. the function CurrentUserId get the details of the current user. i need to get data using GetTemplate function the problem is that i get multiple response contains the same data. I don't know where is the problem
const [id, setId] = useState("");
const [data, setdata] = useState("");
const CurrentUserID = async () => {
const token = await AsyncStorage.getItem("token");
fetch("/", {
headers: new Headers({
Authorization: "Bearer " + token,
}),
})
.then((res) => res.json())
.then((data) => {
// console.log(data);
setId(data._id);
console.log(id);
});
};
const GetTemplates = async () => {
await axios
.get(`/api/user/${id}`)
.then((response) => {
setdata(response.data);
})
.catch(function (error) {
console.log(error);
});
};
useEffect(() => {
CurrentUserID();
GetTemplates();
}, []);
Solution 1:[1]
I think we should call GetTemplates()
only after id
is present. Currently you are calling GetTemplates()
on initial render in useEffect
even before id
is set.
const [id, setId] = useState("");
const [data, setdata] = useState("");
useEffect(() => {
CurrentUserID();
}, []);
// Get Templates only when id changes
useEffect(() => {
if (!id) return; // Initial Render, If id is empty do nothing
GetTemplates();
}, [id]);
const CurrentUserID = async () => {
const token = await AsyncStorage.getItem("token");
fetch("/", {
headers: new Headers({
Authorization: "Bearer " + token,
}),
})
.then((res) => res.json())
.then((data) => {
// console.log(data);
setId(data._id);
console.log(id);
});
};
const GetTemplates = async () => {
await axios
.get(`/api/user/${id}`)
.then((response) => {
setdata(response.data);
})
.catch(function(error) {
console.log(error);
});
};
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | PR7 |