-
-
Notifications
You must be signed in to change notification settings - Fork 375
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add the ability to add and remove hooks on existing instance #666
Comments
Your question seems based on the premise that the original instance still existing is a problem. But why is it a problem? Once you've created your new instance, you can just stop using the original one and it will be garbage collected. |
Hello @sholladay, Thanks for your reply, but here is an use case that i encounter in my React App that I can't manage to handle with ky now
Token lives only in the React Tree and I can't export a component from that. Maybe I'm not going in the right direction, but I can't manage this use case with KY at the moment. |
If you want move to ky is because the axios's size or fetch, you can try xior.js: import xior from 'xior';
const axiosClient = xior.create({
baseURL: 'https://example.com/api'
});
export const useAuthHeaderAxiosInterceptor = (): { isSetUp: boolean } => {
const [isSetUp, setIsSetUp] = useState(false);
const {token} = useAuth();
useEffect(() => {
const interceptor = axiosClient.interceptors.request.use((config) => {
if (!token || config.headers.Authorization) return config;
config.headers.Authorization = `Bearer ${token}`;
return config;
});
// OR
// if (token) axiosClient.defaults.headers['Authorization'] = `Bearer ${token}`;
setIsSetUp(true);
return () => {
axiosClient.interceptors.request.eject(interceptor);
// delete axiosClient.defaults.headers['Authorization'];
setIsSetUp(false);
};
}, [token]);
return { isSetUp };
}; |
Hi everyone,
What do you think about adding the ability to add and remove hooks on an already created instance? I know it's possible to modify an instance with extend, but in this case a new instance is created and the hook on the original instance are not modified.
The use case I have in mind is the possibility of adding a hook from a useEffect in a React application that can be removed when the useEffect is cleaned up. This may be necessary if a JWT token is stored in a React context, for example.
On axios there is two functions for add/remove
Maybe I'm going in the wrong direction and this isn't the right method for this use case?
The text was updated successfully, but these errors were encountered: