React Hot Loader v3。该组件没有被热装载机接受
问题描述:
我已经更新到react-hot-loader
和v.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(); });
}
编辑:
我已经改变了:
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);
......它在一些箱子帮助。不知道有什么区别。
答
我遇到了同样的问题,能够通过不使用“功能组合”来组合多个高阶组件,即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);
嗨,我看你说说'它曾与组件与像HigherOrderComponents组成的事:...'什么你确切地在你的client.js中改变了吗?或者它在client.js之外?请赐教! –
@MervynLee我假设你明白HigherOrderComponent是什么(一个接受组件和返回组件的函数)。所以你在我的例子中看到我使用'withRouter'和'connect' HOC,但是我已经对它们进行了插入,我没有分配这些作业。这是导致错误(使用新版本的HotLoader这是一个警告)。当我将作品(或作品)分解为它所帮助的步骤时。它与'client.js'无关,而是我用来导出组件的一种方式。 – Tomasz
我看到你有在webpack中的经验并作出反应。我目前正面临部署中的一些问题和一些疑问。我可以通过电子邮件或聊天室的方式与您联系以澄清他们吗?谢谢 –