質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

4684閲覧

Material-UIでonClickイベントが動作しない

TosuTosu

総合スコア49

Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

1グッド

0クリップ

投稿2019/05/17 16:07

現在、新しいタブ(newtab)を拡張するChrome拡張機能を作成しています。

メニュー画面にソート可能なメニューバーにMaterial-UIを適用してクリックイベントを追加したところ、動作せず困っております。

jsx

1抜粋... 2return ( 3 <Button className="flex-element-evdbook" onClick={() => { console.log("yyyyy") }}>アイテム1</Button> 4 )

ソートには react-sortable-hoc コンポーネントを使用し、どうやら Material-UIとの組み合わせがクリックが動作しない原因のようなのですが、解決方法がわかりません。 皆様のお力をお借りしたく質問させていただきました。気になる点など些細な情報でも構いませので回答のほうにお寄せいただければと思います。

以下にソースコードを記載します。情報不足などありましたら、適宜追加していきますのでよろしくお願いいたします。

jsx

1class NewTab extends React.Component { 2 3... 4 5 render() { 6 return ( 7 <div className='App'> 8 <Container 9 guidOrder= {this.state.guidOrder} 10 axis="x" 11 onSortEnd={this.OnSortEnd} 12 /> 13 ... 14} 15 16const Container = SortableContainer(({guidOrder}) => { 17 return ( 18 <div className="flex"> 19 {guidOrder.map((guid, index) => ( 20 <Element key={guid} index={index} guid={guid} /> 21 ))} 22 </div> 23 ) 24}); 25 26const Element = SortableElement(({guid}) => { 27 return ( 28 <Button className="flex-element-evdbook" 29 onClick={() => { console.log("yyyyy") }} 30 > 31 SampleElement 32 </Button> 33 ) 34});
Lichtenstein👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

原因はイベントの衝突にあったようです。
この場合、クリックの動作がソートとクリック(イベント処理)の2つ設定されていたため、片方のイベントが無視されていました。

ソートのイベントに遅延処理をかけることで両方の動作を満たすことができましたので解決とさせていただきます。

以下ソースコード

jsx

1<Container 2 guidOrder= {this.state.guidOrder} 3 axis="x" 4 pressDelay="200" // 遅延処理を追加 5 onSortEnd={this.onSortEnd} 6/>

投稿2019/05/17 19:06

TosuTosu

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TosuTosu

2019/05/18 00:46

誤り ☓ pressDelay="200" ↓ ○ pressDelay={200}
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問