キーボード ショートカットは、Web アプリケーションで管理するのが少し難しいです。
コンポーネントを検討しWidget
ます。
キーボード ショートカットに基づいて、特定の要素にフォーカスし、このコンポーネントで関数を実行できるようにしたいと考えています。
class Widget extends React.Component {
componentDidMount() {
this.setBindings()
},
componentWillUnmount() {
this.removeBindings();
}
}
setBindings と removeBindings は、 mousetrapのようなライブラリを使用して、特定のキーボード ショートカットをバインドします。
さて、上記の解決策には 2 つの問題があります。
- キーボード ショートカットの動作が予測不能になります
- 2 つのウィジェットがマウントされ、一方が他方をオーバーライドする場合を考えてみましょう
- ウィジェットはショートカットと密接に結合されます。ショートカットを使用したくない場合は、何らかのフラグをオンにする必要があります
Widget
。この破棄はコードの「粒度」です。理想的には、ユーザーは Widget を使用してから WidgetWithShortcuts などを使用できる必要があります。
別の潜在的な解決策は、インスタンスを渡すことです
const widgetShortcuts = (widgetInstance) => {
return {
'ctrl i': () => widgetInstance.focusInput(),
}
}
2番目のソリューションの問題は次のとおりです。
widgetInstance は、focusSomeThing や invokeProp など、公開されている多くのメソッドを公開する必要があります。
Widget
特定の場所にキーボード ショートカットを表示するツールチップが必要な場合は、キーボード ショートカットに関する情報が別の場所に複製されます。ある場所でショートカットを変更し、別の場所でそれを忘れることが可能になります
上記の問題を解決してキーボード ショートカットを実装する方法について、ベスト プラクティスやアイデアはありますか?