React Hot Loader v3.Hot Loader不接受此组件

Tom*_*zyk 11 reactjs

我已更新react-hot-loaderv.3.0.0,当我在组件中更改某些内容时,我在浏览器中获得更新,但我也在控制台中收到此警告:

React Hot Loader:Hot Loader不接受此组件.请检查它是作为顶级类,函数还是变量提取的.点击下方显示源位置:

问题是我没有在堆栈中看到任何表明我在哪里出错的东西.

webpack条目

client: [
  'react-hot-loader/patch',
  'webpack/hot/only-dev-server',
  'wicg-focus-ring',
  PATHS.clientBundleEntry,
],
Run Code Online (Sandbox Code Playgroud)

eslint

"plugins": [
    "react-html-attrs",
    "transform-runtime",
    "transform-class-properties",
    "styled-jsx-postcss/babel",
    "react-hot-loader/babel"
  ]
Run Code Online (Sandbox Code Playgroud)

client.jsx

function render() {
  ReactDOM.render(
    <AppContainer>
      <Provider store={store}>
        <BrowserRouter>
          {app}
        </BrowserRouter>
      </Provider>
    </AppContainer>,
    document.getElementById('app'),
  );
}

render();
if (module.hot) {
  module.hot.accept('./app', () => { render(); });
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

编辑:

我改变了:

export default withRouter(
  connect(
    (state: ReduxState) => ({
      error: state.requestState.loginError,
    }),
    { loginUser },
  )(LoginContent),
);
Run Code Online (Sandbox Code Playgroud)

成:

const withRouterLoginContent = withRouter(LoginContent);
export default connect(
  (state: ReduxState) => ({
    error: state.requestState.loginError,
  }),
  {
    loginUser,
  },
)(withRouterLoginContent);
Run Code Online (Sandbox Code Playgroud)

......在某些情况下它有所帮助.不知道有什么区别.

Nic*_*ina 7

我遇到了同样的问题,并且能够通过不使用"功能组合"来组合多个高阶组件来解决它,如React Hot Loader故障排除指南中所述.

他们在页面底部的"解决方案"为我修复了警告.转载于此,这是转换的问题:

const SuperComponent = 
     connect()(         <-- last HoC
       withSomeStuff(   <-- first HoC
         Component      <-- a real component
       )
     );
Run Code Online (Sandbox Code Playgroud)

至:

const WithSomeStuffComponent = withSomeStuff(Component);
const SuperComponent = connect()(WithSomeStuffComponent);
Run Code Online (Sandbox Code Playgroud)