我正在重构一个旧项目,并且正在尝试仅使用功能组件、挂钩等。该项目是一个步进音序器(即一个应用程序,它允许您通过切换按钮网格来创建自己的音乐循环/vamps )。
我想将所有 WebAudio 逻辑抽象到一个单独的文件中。我创建了一个 React Context,它模仿类组件中所做的一切,并通过useContext
钩子公开必要的数据/函数,但由于某种原因,使用函数组件和钩子的版本无法与 Tone.js 交互。
我创建了一个 CodeSandbox,您可以在其中轻松地在 Class 和 Functional 版本之间切换,这样您就可以看到我在说什么。
我希望我能更具体地说明什么不起作用,但老实说,我不知道为什么一切都坏了。我想我很困惑,因为 Tone.js 是一个事件驱动的框架,很难在这种思维模式和 React 中使用的声明性模型之间切换。
在此先感谢您的帮助!