roo*_*ess 5 javascript keyboard-events reactjs redux
背景故事
我是 React(和 Redux)新手,想要编写一个 Web 应用程序,其中交互仅通过键盘/远程事件(箭头键而不是鼠标或触摸)进行,类似于 netflix 在其嵌入式电视应用程序中所做的事情。
我对如何构建这样一个应用程序有一个粗略的想法,但不确定在 ReactJS 中是否有更优雅的方法来做到这一点。
处理组件矩阵内的箭头键交互的想法
我的想法是为容器内的组件提供某种集中状态:
例子
让有一个名为 MyLibrary 的全屏容器组件。它包括 2 个组件:
右侧活动导航的数据列表视图
|-----------------------|
| Nav | List |
| -n1 | 1. Miles |
| -n2 | 2. Bill |
| -n3 | 3. Lester |
| | 4. Herbie |
| | 5. McCoy |
|_______________________|
Run Code Online (Sandbox Code Playgroud)MyLibrary 将导航组件集中在安装上,因此上/下/左/右通过 MyLibrary 传递到导航中。
按下了向下键,因此导航更新了它自己选择的条目状态。
按下了“RIGHT”,但“导航”不处理该键,因此它通知 MyLibrary 由于“RIGHT”而想要取消焦点。
MyLibrary 现在通过其配置的组件矩阵知道,导航组件的右侧不聚焦意味着聚焦 ListView。
导航失去焦点,ListView 获得焦点。现在所有键都传递给 ListView。
问题
小智 5
您可以使用建立路由解决方案,例如: https: //github.com/reactjs/react-router
它使您的 UI 与状态(URL、HashLocation 或内存状态)保持同步
我还会选择一个精心设计的解决方案,例如: https: //github.com/Chrisui/react-hotkeys 它为您提供了一种很好的声明性方式来处理热键并专注于布局级别。
毕竟它只是 javascript。如果您觉得任何现有的解决方案都太过分了,请随意从这些现有的想法中学习最好的概念,并编写您自己的 ghetto JS 胶水来制作您自己的神奇药水。