在umi中使用react-darkreader进行主题切换,其原理则是运用了css中的滤镜

  1. filter: invert(100%) hue-rotate(180deg) brightness(115%) contrast(95%);

使用

新建ToggleTheme组件,并在app.tsx中引入组件

  1. import React, { useEffect } from 'react';
  2. import { useDarkreader } from 'react-darkreader';
  3. const ToggleTheme = () => {
  4. const [isDark, { toggle }] = useDarkreader(false);
  5. useEffect(() => {
  6. if (window.location.hash === '#dark') {
  7. toggle();
  8. }
  9. }, []);
  10. return <></>;
  11. };
  12. export default ToggleTheme

具体参数请参考:https://github.com/Turkyden/react-darkreader