Динамически загружать элемент управления React / Material UI из файла - PullRequest
0 голосов
/ 28 апреля 2020

Мне удалось загрузить элемент управления Dynami c в файл, следующий за этой статьей: https://medium.com/@samarjit.samanta / Reaction-Dynami c -plugins-loading-e45905aa00a7

Однако сейчас я пытаюсь использовать компоненты пользовательского интерфейса материалов в динамически загружаемом элементе управления в компоненте render (). Все прекрасно работает, за исключением того, что тема не передается правильно, я попытался обернуть динамический c компонент с ThemeProvider и все еще не годится.

Функция рендеринга хоста -

render() {
    const { formField, theme } = this.props;        

    if (this.state.component !== null) {
        const Component = this.state.component;
        return (
            <ThemeProvider theme={theme}>
                <Component>Hi from react component</Component>
            </ThemeProvider>
        );
    }

    return null;

}

И мой динамически загружаемый компонент MUI выглядит следующим образом:

import React from 'react';
import TextField from '@material-ui/core/TextField';
import { createStyles, withStyles } from '@material-ui/core';

const styles = (theme) => createStyles({
    formControl: {
        margin: theme.spacing(1),
    },
    formControlModified: {
        margin: theme.spacing(1),
        '& .MuiFilledInput-input': {
            backgroundColor: theme.palette.info[theme.palette.type],
            borderTopLeftRadius: '4px',
            borderTopRightRadius: '4px',
        },
    },
});

class Field extends React.Component {
    constructor(props){
        super(props);
        console.log('Field loading');
    }
    render () {
        console.log('Field rendering part 2');
        return <TextField id="standard-basic" label="Standard" variant="filled" />;        
    }
};

export default withStyles(styles, { withTheme: true })(Field);

Любые идеи о том, что я делаю неправильно. Как примечание: динамически загружаемый компонент, похоже, получает совершенно новую тему, а не тот, который я пытаюсь передать.

В любом случае, заранее благодарю за помощь Cheers Jason

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...