Лучше ли визуализировать счетчики, закусочные и т. Д. В отдельных элементах DOM, а не добавлять их в основное дерево компонентов приложения?В компонентах класса React было действительно легко получить ссылку на методы компонентов класса, чтобы показать / скрыть счетчик.С новыми функциональными компонентами React Hooks это уже не так просто.Если я помещу счетчик в главное дерево компонентов, могу ли я использовать новый хук "useContext", чтобы показать / скрыть счетчик?
Ниже представлен глобальный счетчик React Hooks с использованием Material-UI, который работает, но очень хакерский,Как это можно сделать более элегантным?
namespace Spinner {
'use strict';
export let show: any; // Show method ref.
export let hide: any; // Hide method ref.
export function Render() {
const [visible, setVisible] = React.useState(false); //Set refresh method.
function showIt() {
setVisible(true); // Show spinner.
}
function hideIt() {
setVisible(false); // Hide spinner.
}
const styles: any = createStyles({
col1Container: { display: 'flex', alignItems: 'center', justifyContent: 'center', flexDirection: 'column' },
});
return (
<div>
{visible && <div style={styles.col1Container}>
<CircularProgress key={Util.uid()}
color='secondary'
size={30}
thickness={3.6}
/>
</div>}
<SetSpinnerRefs showRef={showIt} hideRef={hideIt} />
</div>
); // end return.
} // end function.
const mounted: boolean = true;
interface iProps {
showRef();
hideRef();
}
function SetSpinnerRefs(props: iProps) {
// ComponentDidMount.
React.useEffect(() => {
Spinner.show = props.showRef;
Spinner.hide = props.hideRef;
}, [mounted]);
return (<span />);
}
} // end module.