警告:这个答案修改了两个内部字段(因为它们在 React 17.0.2 中)。
如果 React Context 对象在内部发生变化,这将中断
null
默认主题的原因来自:
@mui/private-theming/node/useTheme/ThemeContext.js
const ThemeContext = /*#__PURE__*/React.createContext(null);
当为 ThemeContext 调用 createContext 时,没有设置默认主题。
因此可以添加单元测试设置代码(在您的单元测试运行之前):
import { createTheme } from '@mui/material/styles';
import('@mui/private-theming/node/useTheme/ThemeContext.js').then(ThemeContext =>
{
let defaultTheme = React.createContext(createTheme({}));
if (ThemeContext.default)
{
ThemeContext.default._currentValue = defaultTheme._currentValue;
ThemeContext.default._currentValue2 = defaultTheme._currentValue2;
}
});
这会修改两个内部字段,_currentValue
和_currentValue2
将默认 ThemeContext 调整为等效于
const ThemeContext = /*#__PURE__*/React.createContext(createTheme({}));