X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fpages%2FTechnique.js;fp=resources%2Fjs%2Fcomponents%2Fpages%2FTechnique.js;h=19b56b72829e3c0427505b3a2327483516c2fc54;hb=68aabaf6da8ed6e675bdea728702d5bd75066964;hp=0000000000000000000000000000000000000000;hpb=189312993c9afdebfb1805b65986483e83395bb2;p=alttp.git diff --git a/resources/js/components/pages/Technique.js b/resources/js/components/pages/Technique.js new file mode 100644 index 0000000..19b56b7 --- /dev/null +++ b/resources/js/components/pages/Technique.js @@ -0,0 +1,57 @@ +import axios from 'axios'; +import React, { useEffect, useState } from 'react'; +import { useParams } from 'react-router-dom'; + +import ErrorBoundary from '../common/ErrorBoundary'; +import ErrorMessage from '../common/ErrorMessage'; +import Loading from '../common/Loading'; +import NotFound from '../pages/NotFound'; +import Detail from '../techniques/Detail'; + +const Technique = () => { + const params = useParams(); + const { name } = params; + + const [error, setError] = useState(null); + const [loading, setLoading] = useState(true); + const [technique, setTechnique] = useState(null); + + useEffect(() => { + const ctrl = new AbortController(); + setLoading(true); + axios + .get(`/api/tech/${name}`, { signal: ctrl.signal }) + .then(response => { + setError(null); + setLoading(false); + setTechnique(response.data); + window.document.title = response.data.title; + }) + .catch(error => { + setError(error); + setLoading(false); + setTechnique(null); + }); + return () => { + ctrl.abort(); + }; + }, [name]); + + if (loading) { + return ; + } + + if (error) { + return ; + } + + if (!technique) { + return ; + } + + return + + ; +}; + +export default Technique;