Как использовать HO C с compose (redux)? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть 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);
...