为什么 React-Magic-Move 示例在 JSFiddle 中因“只有 ReactOwner 可以有参考”错误而中断?

IT技术 reactjs jsfiddle
2021-05-03 20:21:18

我想获得在 JSFiddle 工作的漂亮react-magic-move组件的“基本”(美国)示例,以进行修补。(另见令人印象深刻的视频演示https://www.youtube.com/watch?v=z5e7kWSHWTg#t=424

我已将 react-magic-move 'dist' 脚本添加到 Base React (JSX) 小提琴,以及其他(最小调整的)示例 JS/CSS/HTML。您可以在此处查看尝试:

http://jsfiddle.net/69z2wepo/4692/

但是,它会在初始渲染后期触发错误:

Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's 'render' method). Try rendering this component inside of a new top-level component which will hold the ref.

很明显,它正在加载 MagicMove 代码并成功完成大部分渲染:在错误之后,真实 DOM 已经组装完毕。在 React 之后包含 dist 脚本应该可以工作。

认为这可能是 JSFiddle 窗格特有的问题,我在本地文件中尝试了相同的设置:相同的错误。认为这可能是浏览器中的 JSX 交互,我尝试了预编译的 JSX:同样的错误。(见http://jsfiddle.net/5vjqabv3/325/)。首先是 React 0.13.1 的错误;尝试回滚到 0.12.0 的基础小提琴:同样的错误。(见http://jsfiddle.net/kb3gN/10548/

在异常发生的那一刻,当前元素(ReactElement、div、ref 'AL')有一个 null _owner 属性——这似乎是关闭的。

有什么想法阻止建立必要的 React-owner-relationship 吗?react-magic-move dist 脚本是否以这种所需的“react后加载”方式损坏或无法使用?

2个回答

这就是我为让示例在本地工作所做的工作

git clone git@github.com:ryanflorence/react-magic-move.git
cd react-magic-move
npm install
scripts/dev-examples

现在在浏览器中打开http://localhost:8080/basic/,它以某种方式工作

我有一个不同的reactmodule的类似情况。我们所做的是为我们的webpack.config.js命名添加一个别名react,指向我们的node_modules/react. 这可以防止加载任何其他react实例。它看起来像这样

alias: {
    'react': path.join(__dirname, 'node_modules', 'react')
},