【React】iOSでReact SelectのonChangeが呼ばれない時の対処法

以前、検索機能付きの Select 要素を実装できるライブラリ「React Select」をご紹介しましたが、こちらのライブラリがなんと iOS で使えないということが判明しました…!
表示は正しく行えるのですが、Select 内の要素をタップして選択した時に、呼ばれるはずの onChenge が呼ばれず、値の更新ができないという状況でした。
Android だと正常に動いていたので、今更別のに変えたくない…!ということで、なんとか出来ないか挑戦することにしました。

なお、こちらの機能は、Cordova で開発している iOS 及び Android アプリに実装しようとしています。
…アプリ上で動かそうとしているのも影響がありそうですね。

React Select の公式サイトはこちらから。

React Select
https://react-select.com/home

なお、インストール方法や実装方法については、以前の記事で紹介しましたので、今回は省略させていただきます。

 

さて、修正方法ですが、もともと React Select の Props に用意されている menuIsOpen を使いました。
この menuIsOpen オプションは、Select 要素を最初から展開しておくかどうかを指定でき、こちらに true を指定します。
そうすると、メニューが最初から開きっぱなしになるのですが、こうしておくと、項目をタップして選択した際に、iOS でも onChange が無事に呼ばれ、値の更新処理を行うことができました。
…この menuIsOpen を使おうと思ったのは本当に偶然だったのですが…結果的にうまくいってよかったです。

ただ、メニューが開きっぱなしになるので、場合によっては UI に影響が出る場合も考えられますので、そこは調整をしていただく必要があるかもしれません。

 

以上、React Select の onChange が呼ばれず、値が更新できない時の対処法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG