问题描述
我正在使用 Preact 构建日期选择器组件。到目前为止,我已经设法使动画正确并完成了事件处理。该组件具有如下图所示的交互:
组件本身被分成许多更小的组件,其中每个组件都有一些关于其本地状态的概念:
- 日历 - 管理视图之间的状态和动画/转换的顶级组件
- CenturyView - 呈现年份列表
- YearView - 呈现给定年份的月份列表
- MonthView - 日期选择器,主要呈现给定月份的天数。
此日历可以用作页面中的独立内联小部件,也可以在选择器/下拉菜单中使用,如下所示。下一个任务是为组件构建键盘可访问性。而且,这一直无处可去。焦点管理很快就变得一团糟。
由于 React 组件或组件系统的目的是将状态与 UI 分离,或者更多是关于制作 P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13
object
A_XS NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
A_S NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
A_M NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
A_L NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
A_XL NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
A NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
B_XS NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0
B_S NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0
B_M NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0
B_L NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0
B_XL NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0
B NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0 1.0
C_XS NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0
C_S NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0
C_M NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0
C_L NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0
C_XL NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0
C NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0 1.0
D_XS NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0
D_S NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0
D_M NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0
D_L NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0
D_XL NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0
D NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0 1.0
E NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0 1.0
F NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0 1.0
G NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 1.0
,那么管理 Focus 相关状态的最佳方法是什么?就其本质而言,专注于命令式操作并经常使用 UI = Function(State)
和 useRef
处理,但这些原语不足以在如此复杂的场景中轻松实现键盘可访问性。
所以问题是:
- 处理焦点状态的最佳方法是什么?
- 如何在同级组件(MonthView 到 YearView 或反之亦然)的不同 DOM 元素之间转换焦点?
- 使用键盘箭头键在不同 DOM 元素之间更改焦点的最佳方法是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)