Material-uiを使用してダイアログボックスを表示するReactプロジェクトを構築しました。何らかの理由で、ダイアログを開くトリガーとなるボタンをクリックすると、2番目のタッチイベントが発生して、ダイアログボックスにあるリンクまたはボタンがトリガーされるように見えます。同様の問題は、ボタンをクリックしてダイアログボックスを閉じると発生します。これを行うと、ダイアログは閉じますが、クリックした要素のすぐ後ろにある要素で別のタッチイベントがトリガーされます。onTouch Material-UIダイアログを使用して2回タップをタップ
Material-uiを使用するためにreact-tap-event-plugin
が含まれています。このゴーストタップの動作で2つの要素が重なっていない限り、アプリは本当にうまく動作します。
import React, { Component } from 'react'
import Dialog from 'material-ui/Dialog'
class Introduction extends Component {
constructor(props) {
super(props)
this.state = { complete: false }
this.finish = this.finish.bind(this)
}
finish() {
this.setState({ complete: true })
}
render() {
const actions = (
<div>
<button onTouchTap={this.finish}>Finish</button>
</div>
)
if (!this.state.complete) {
return (
<Dialog open actions={actions}>
<h3>Dialog header</h3>
<p>Dialog text</p>
</Dialog>
)
}
return null
}
}
そのアクションボタン「完了」は、ダイアログを閉じることをクリックして、その背後にある要素はまた、touchTapイベントを受信したときにです:
これが私たちのコンポーネントがどのように見えるかの簡易版です。
違いがある場合は、Cordovaを使用してモバイル用アプリをラップしています。私たちはこの問題をモバイル(iOSの間違いなく)だけでなく、Chromeでテスト中のデバイスモードでも発生しています。
私は間違っていますか?アドバイスをいただければ幸いです。
ありがとう!このコードにもう一度戻るには時間がかかりましたが、これで私の問題は完全に修正されました。 – Blair
onTouchTapイベントを自分で追加するとうまく動作しますが、どのようにselectFieldsを処理しますか?私がオプションを選択するたびに、オプションの下の項目をクリックする(通常は他のselectField)。 なぜこのすべてが処理するのが難しいのかわかりません... – jadus