У меня есть HO C с именем ThemeProvider из @ material-ui / core, и я хочу использовать его с compose. Теперь у меня есть этот компонент:
import {hot} from 'react-hot-loader/root';
interface IRoutesProps {
isTokenVerifying: boolean;
userPalette: IPalette;
}
const Routes = ({isTokenVerifying, userPalette}: IRoutesProps) => {
if (isTokenVerifying) {
return (
<LoadIndicator
id='large-indicator'
height={50}
width={50}
elementAttr={{class: styles.loader}}
/>
);
}
return (
<ThemeProvider theme={defaultMaterialTheme(userPalette)}>
<Switch>
....
</Switch>
</ThemeProvider>
);
};
const mapStateToProps = (state: RootState) => ({
isTokenVerifying: getPendingTokenVerify(state),
userPalette: getUserPalette(state),
});
export default hot(connect(mapStateToProps)(Routes));
Как я могу сделать это с помощью compose? Я попробовал этот случай, но он не работает:
const ThemeProviderContainer = ({ children, userPalette }: any) =>
<ThemeProvider theme={defaultMaterialTheme(userPalette)}>
{children}
</ThemeProvider>;
export default hot(
compose(connect(mapStateToProps), ThemeProviderContainer),
)(Routes);