我发现依赖注入的最大好处是能够在组合根的一行中替换整个应用程序中的服务实现。
有没有办法使用 React 钩子来做到这一点?
似乎在使用钩子时,例如 useHook(),您紧紧地绑定到特定的实现,这是一个手动过程来查找和切换所有的实现,这进一步复杂 useHooks() 出现在任意点组件。
我目前的解决方案是使用 React Context 使组合根可用于所有需要的东西,这似乎运行良好,但有许多吹捧 Hooks 作为 DI 框架的我想知道我是否遗漏了什么。
我正在尝试使用材质 UI 菜单在 div 上显示上下文菜单,如https://material-ui.com/components/menus/#context-menu中所示
这有效,我可以右键单击并显示它。
然而,material-ui 上下文菜单在显示时会注入一个透明的 div 覆盖菜单后面的整个屏幕。这意味着任何进一步的点击都会被该元素拦截。当检测到左键单击时,该元素似乎将关闭菜单,但如果您右键单击页面上的其他任何位置(包括上下文菜单不相关的位置),该元素将移动并继续显示相同的上下文菜单。
有没有办法在没有这个透明 div 的情况下显示菜单,该透明 div 会从我的页面中删除控制?
您可以在示例中看到此操作: https: //material-ui.com/components/menus/#context-menu 右键单击文本,然后右键单击其他任何位置(当菜单仍然显示时)可以触发菜单出现在整个页面上,甚至在应用栏中,菜单选项没有任何意义。