React Hot Loader v3。该组件没有被热装载机接受

问题描述:

我已经更新到react-hot-loaderv.3.0.0,当我在成分改变的东西,我得到在浏览器的更新,但我也得在控制台这样的警告:React Hot Loader v3。该组件没有被热装载机接受

阵营热门装载机: Hot Loader不接受此组件。 请检查是否提取为顶级类,函数或 变量。点击下面显示来源位置:

问题是我没有看到任何东西在堆栈中,这将暗示我错误在哪里。

的WebPack进入

client: [ 
    'react-hot-loader/patch', 
    'webpack/hot/only-dev-server', 
    'wicg-focus-ring', 
    PATHS.clientBundleEntry, 
], 

eslint

"plugins": [ 
    "react-html-attrs", 
    "transform-runtime", 
    "transform-class-properties", 
    "styled-jsx-postcss/babel", 
    "react-hot-loader/babel" 
    ] 

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(); }); 
} 

stacktrace

编辑:

我已经改变了:

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

到:

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

......它在一些箱子帮助。不知道有什么区别。

+0

嗨,我看你说说'它曾与组件与像HigherOrderComponents组成的事:...'什么你确切地在你的client.js中改变了吗?或者它在client.js之外?请赐教! –

+0

@MervynLee我假设你明白HigherOrderComponent是什么(一个接受组件和返回组件的函数)。所以你在我的例子中看到我使用'withRouter'和'connect' HOC,但是我已经对它们进行了插入,我没有分配这些作业。这是导致错误(使用新版本的HotLoader这是一个警告)。当我将作品(或作品)分解为它所帮助的步骤时。它与'client.js'无关,而是我用来导出组件的一种方式。 – Tomasz

+0

我看到你有在webpack中的经验并作出反应。我目前正面临部署中的一些问题和一些疑问。我可以通过电子邮件或聊天室的方式与您联系以澄清他们吗?谢谢 –

我遇到了同样的问题,能够通过不使用“功能组合”来组合多个高阶组件,即as described in React Hot Loader's Troubleshooting Guide来解决它。

他们在页面底部的“解决方案”修复了我的警告。这里转载,这是转换的问题:

const SuperComponent = 
    connect()(  <-- last HoC 
     withSomeStuff( <-- first HoC 
     Component  <-- a real component 
     ) 
    ); 

要:

const WithSomeStuffComponent = withSomeStuff(Component); 
const SuperComponent = connect()(WithSomeStuffComponent);