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

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

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

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

Q&A

解決済

1回答

1284閲覧

【React】onClickを使ったイベント処理に共通処理を割り込ませたい

m-88888888

総合スコア14

onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

0グッド

0クリップ

投稿2021/05/19 10:45

編集2021/05/19 11:48

聞きたいこと

プロジェクト全体で使用しているbuttonコンポーネントなどのonClick()イベントに下記のevent()のような共通処理を割り込ませる方法を探しております。
最終的には各コンポーネントで使用するbuttononClickevent()の処理が埋め込まれている状態にしたいです。
自分で調査した結果、以下の2種類の方法を見つけましたが、割り込ませたいイベントの処理にも依存するとは思いますが、どちらの手法がベターなのか皆さんをご意見をお聞きしたいです。
また、間違っているor不足している点などがございましたら、ご教授いただけますと幸いです。

javascript

1const event = (props: HogeType): void => { 2 // ここでpropsを外部に送信する 3} 4 5// クリックされたときにidなどをevent()に渡して実行したい。これを共通化したい。 6<button id="hogehoge">Done</button>

1. buttonコンポーネントのカスタムコンポーネントを作成する

カスタムコンポーネントの使用を義務付けるのはイケてないですし、既存のbuttonも書き換える必要があって実装量が増えてしまうという懸念点があります。。。

2. 渡されたbuttonコンポーネントのonClickにのような処理を追加して返すHOCを作成する

HOCを使ったことがなく、知識不足は否めませんが今回のような横断的関心事には良さそうでは?と思い候補に挙げています。

バージョン

json

1"react": "^16.13.1", 2"typescript": "^3.9.2"

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

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

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

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

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

maisumakun

2021/05/19 10:48

したいことは、ログを表示する「だけ」ですか? (イベントオブジェクトに細工をするなど、やりたいことによっては適切な手段が違ってくることが考えられます)
m-88888888

2021/05/19 10:59

早速のご回答ありがとうございます。 すみません、やりたいことのサンプルが余りにも簡素・稚拙すぎました。 もっと具体的な例でいうと、以下のような引数を受け取る関数を`onClick`で実行させたいです。 また、この関数にはbuttonコンポーネントのidなどをpropsを渡したいと考えています。 ```javascript const event = (props: HogeType): void => { // ここでpropsを外部に送信する } // クリックされたときにidをevent()に渡して実行したい。これを共通化したい。 <button id="hogehoge">Done</button> ```
guest

回答1

0

ベストアンサー

document.onclick で event.target を見て、button だったら処理をすればいい。
Reactというよりは普通のJSのテクニック。

投稿2021/05/20 12:54

fukken

総合スコア73

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

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

m-88888888

2021/05/22 01:09

ご回答ありがとうございます! ご指摘の通り、GlobalEventHandlers.onclickなどを使えばやりたいことはできそうです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問