reactjs – 无法设置#的属性createElement,它只是一个getter

描述

您在报告的内容:我正在关注如何设置React hot loarder的set of instructions.但是当我进入第3步,我把补丁放到第3步时,它就会突破到下面的那个.

预期的行为

您认为应该发生什么:应该正常工作

实际行为

环境

React Hot Loader版本:下一步

在项目文件夹中运行这些命令并填写其结果:

> node -v:7.9.0
> npm -v:4.2.0

然后,指定:

>操作系统:Windows 10
>浏览器和版本:最新的Chrome

可重复的演示

https://github.com/abarcenas29/preact-sandbox-v0/blob/wip/hot-reloader/src/main.js

分支:wip-hot-reloader

说明:

>纱线
>纱线后安装
>纱线运行开始:开发

我没有足够的声誉发表评论,所以我必须写一个答案,这不是问题的解决方案,但仍然……

您收到的错误是由于react-hot-loader / patch需要实际的react模块并使用新的功能修补其createElement功能.
在此处查看:react-hot-loader / lib / patch.dev.js:179

主要问题是在webpack config反应模块中解析为preact-compat,这显然不允许设置新值,因此Hot Reload无法一起运行.

希望这能回答你的问题.照原样 – 我认为热重装不会在该设置中起作用.

编辑:
找到一个简单的解决方
将webpack.config.js解析块更改为此,以指向您自己的脚本的响应:

// resolve for preact
webpack.resolve = {
  alias: {
    react: path.resolve(__dirname,'react.js')
    // the rest goes as before
  }
}

现在创建react.js文件并将其放入内部(根据需要更改路径和名称):

var preact = require('preact-compat');

var react = {};
// copy object properties to a new object which will allow react-hot-loader to do its magic
Object.keys(preact).forEach(function(key) {
    react[key] = preact[key];
});

module.exports = react;

并做了! HMR现在正在运作.

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...