【React】ENTERキー押下でsubmit。onKeyPressが非推奨みたいなので修正してみた。

以前にこのような記事を書いたのですが、
どうも、onKeyPressというのが非推奨になっていたらしい。
onKeyUpかonKeyDownを使うことを推奨されてるようですが、以前の記事のような感じでonKeyDownを使用すると、日本語変換の確定時に押すEnterでもsubmitしてしまう。
これでは非常に都合が悪いので、対応策を考えてみる。
で、どうやらonCompositionStartとonCompositionEndというものを使うといいらしい。
これが何かといいますと、日本語入力の開始と終了時に発火するイベントらしい。
というわけでコードを修正。
const [composition, setComposition] = React.useState(false);
const keyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {
if (!composition && e.code === "Enter") {
// Enter時に発生させたいイベント
}
};
<TextField
onKeyDown={(e) => keyDown(e)}
onCompositionStart={() => setComposition(true)}
onCompositionEnd={() => setComposition(false)}
/>
これで日本語入力変換後のENTERで動くようになる。
onCompositionStartは初めて知ったので勉強になった。