Hem get hem de post verileri için özel getirme kancamı oluşturuyorum. Özel getirme kancaları oluşturmak için resmi React dokümanlarını takip ediyordum, ancak kanca döndürülmüş durum değişkenlerim USESTATE eşzamansız davranışı nedeniyle bir adım geride kalıyor gibi görünüyor. İşte benim özel kullanımımutasyon kancası
export const useMutationAwait = (url, options) => {
const [body, setBody] = React.useState({});
const [data, setData] = React.useState(null);
const [error, setError] = React.useState(null);
const [isLoading, setIsLoading] = React.useState(false);
React.useEffect(() => {
const fetchData = async () => {
setError(null);
setIsLoading(true);
console.log("...fetching");
try {
const response = await axiosInstance.post(url, body, options);
setData(response.status);
} catch (error) {
console.error(error.response.data);
setError(error.response.data);
}
setIsLoading(false);
};
fetchData();
}, [body]);
return [{ data, isLoading, error }, setBody];
};
Ve bunu bileşenimde şu şekilde kullanıyorum (basitleştirilmiş) - kullanıcı kayıt düğmesine bastığında, gönderimin başarılı olup olmadığına hemen karar verebilmek ve buna göre kullanıcıyı başka bir ekrana yönlendirmek veya getirme hatası görüntülemek istiyorum.
const [email, setEmail] = React.useState('');
const [password, setPassword] React.useState('');
const [{ data: mutData, error: mutError }, sendPost] =
useMutationAwait("/auth/pre-signup");
const registerUser = async () => {
sendPost({
email,
password,
}); ---> here I want to evaluate the result but when I log data and error, the results come after second log (at first they are both null as initialised in hook)
Başarmaya çalıştığım bu yaklaşım doğru mu? Temel olarak veri toplama ve veri mutasyonu için bazı genel işlevler oluşturmak istiyorum ve kancaların yol olabileceğini düşündüm.