Может ли HMR (горячая замена модуля) обновить текущий модуль? - PullRequest
0 голосов
/ 22 ноября 2018

Может ли HMR обновить текущий модуль?Я проверил это, и, кажется, не работает.Может кто-нибудь подробно объяснить, почему это не работает?Требуется ли, чтобы всегда был модуль более высокого уровня, который обновляет модуль замены.

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import App from './App';

import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';

const styles = theme => ({});

class UserCreate extends Component {

    state = {
        spacing: '8',
    };

    render() {
        const { classes } = this.props;
        const { spacing }  = this.state;
        return (<Typography>User create says hello</Typography>)
    }
}


UserCreate.propTypes = { 
  "classes": PropTypes.object.isRequired
}

const UserCreateWithStyles = withStyles(styles)(UserCreate)

export default UserCreateWithStyles

const element = document.getElementById('root');

export const render = (Component) => { 
        ReactDOM.render(<App><Component/></App>,element);
    }

if (module.hot) {
    module.hot.accept("./UserCreate", () => {
        const NextContainer = require("./UserCreate").default;
        render(NextContainer);
      });
}

Обычная реализация для HMR приведена ниже.Создайте модуль более высокого порядка, который обновляет изменяющийся модуль, проверяя module.hot

app.js

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import UserCreate from './UserCreate';

const element = document.getElementById('root');


export const render = (Component) => { 
        ReactDOM.render(<Component>,element);
}

if (module.hot) {
    module.hot.accept("./UserCreate", () => {
        const NextContainer = require("./UserCreate").default;
        render(NextContainer);
    });
}
...