【问题标题】:react-dnd + proxyquire -> Invariant Violation: Could not find the drag and drop manager in the context MyComponentreact-dnd + proxyquire -> Invariant Violation:在上下文 MyComponent 中找不到拖放管理器
【发布时间】:2015-11-18 21:15:12
【问题描述】:

我一直在使用 proxyquire 来存根子组件和存储,但遇到了包含在 react-dnd 上下文中的组件的 Invariant Violation。

警告:上下文类型失败:所需的上下文 dragDropManager 未在 DragSource(Card) 中指定。 错误:不变违规:在 Card 的上下文中找不到拖放管理器。确保使用 DragDropContext 包装应用程序的顶级组件。阅读更多:http://gaearon.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context

我整理了一个 repo 来演示错误:见https://github.com/cmelion/react-hot-boilerplate/tree/Invariant-Violation-DND

运行它执行

npm install 
npm test

【问题讨论】:

  • Dan Abramov @gaearon 能够为我指明正确的方向。已使用有效配置更新了 repo。

标签: reactjs proxyquire


【解决方案1】:

虽然我不完全理解为什么,但在 proxyquire 返回的存根上设置“stub['@global'] = true”会触发不变量违规。

未设置 @global 会阻止 React.TestUtils 正常工作,再次不确定原因。

最终的解决方案是结合使用布尔值有条件地设置 @global 并回退到旧的 querySelectorAll。

const subComponent = React.findDOMNode(comp).querySelectorAll('.simple-subcomponent');
should(subComponent.length).equal(1);

该存储库已更新了测试用例,这些测试用例说明了“正常”proxyquire 存根和“特殊”用例之间的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 2020-03-21
    • 2019-09-19
    • 2018-12-08
    • 2020-11-20
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多