私はアプリケーションにキーボードショートカットを追加するためにreact-keydownライブラリを使用していますが、内部ダイアログコンポーネントでは動作させることはできません。ダイアログは常に表示されているわけではありませんが、キーが表示されているときにそのキーが機能することを期待しています。 は私がevent_handlers.js._onKeyDown(イベント)方法を取得していますが、欠損値で:未定義FN =、 FN一方で装飾された機能が含まれている必要があります。react-keydownを使用して内部コンポーネントのkeydownイベントをキャッチ
<Container>
<MyDialog>
<material-ui-dialog/>
</MyDialog>
</Container>
Container.js:
import keydown from 'react-keydown'
class Container extends Component {
@keydown('enter')
someMethod1(){
// working
}
render() {
return (
<div>
<MyDialog/>
</div>
)
}
}
MyDialog.js:
私のコンポーネントがどのように見えるコメントにあなたの説明に基づいて
import keydown, {keydownScoped} from 'react-keydown'
@keydown('enter')
class MyDialog extends Component {
@keydownScoped('enter')
someMethod3(){
// not working
}
}
可視かどうかを判断するロジックは何ですか?また、フォームフィールドにフォーカスしたときにキーバインドメソッドをトリガーしようとしていないことを確認できますか? – glortho
ダイアログが常に表示されるとは限りません。これは、コンポーネント内の他のアクションによってトリガされる確認ダイアログ(マテリアルUIダイアログを含む)です。コンポーネントには入力フィールドやテキスト領域はなく、ok/cancelボタン付きのダイアログのみです。 – user1813302
表示されていなくてもマウントされていますか?問題は、すでにマウントされているが隠されていて、ダイアログコンポーネントの範囲外にあるコンポーネントをクリックまたはタブすると、キーバインドが応答しなくなるということです。 – glortho