mirror of
https://github.com/muerwre/muerwre.github.io.git
synced 2025-04-25 02:46:39 +07:00

Author: Fedor Katurov <gotham48@gmail.com> Date: Thu Nov 10 16:39:30 2022 +0600 fixed github icon
1 line
No EOL
21 KiB
JSON
1 line
No EOL
21 KiB
JSON
{"_path":"/frontend/react/axios-with-abortcontroller","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios With AbortController","description":"If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69597e"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69597e"},"children":[{"type":"text","value":"'axios'"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-baef43"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"useGetUsers"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-baef43"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"());"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-baef43"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-baef43"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69597e"},"children":[{"type":"text","value":"\"/\""}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4983c0"},"children":[{"type":"text","value":"// params and props here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" signal: "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"signal"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"data"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-baef43"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-7b2e81"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"abort"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4983c0"},"children":[{"type":"text","value":"// controller should be rewritten or all requests will fail"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e41766"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-680976"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-a44a7c"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b2e564"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4983c0{color:#8B949E}.ct-e41766{color:#D2A8FF}.ct-baef43{color:#79C0FF}.ct-7b2e81{color:#FF7B72}.ct-69597e{color:#A5D6FF}.ct-a44a7c{color:#C9D1D9}.ct-b2e564{color:#C9D1D9}.ct-680976{color:#FF7B72}.light .ct-680976{color:#859900}.light .ct-b2e564{color:#657B83}.light .ct-a44a7c{color:#268BD2}.light .ct-69597e{color:#2AA198}.light .ct-7b2e81{color:#073642}.light .ct-baef43{color:#268BD2}.light .ct-e41766{color:#268BD2}.light .ct-4983c0{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios with AbortController.md","_source":"content","_file":"Frontend/React/Axios with AbortController.md","_extension":"md"} |