[解決済み】ReactのインラインCSSスタイル:a:hoverを実装する方法は?
質問
がかなり好きです。 React のインライン CSS パターン で、これを使うことにしました。
ただし
:hover
と同様のセレクタを使用します。では、インラインのCSSスタイルを使用しながらハイライト・オン・ホバーを実装するには、どのような方法があるのでしょうか?
reactjsからの提案のひとつに
Clickable
コンポーネントを作成し、このように使用します。
<Clickable>
<Link />
</Clickable>
は
Clickable
には
hovered
の状態にして、それをLinkにpropsとして渡しています。しかし
Clickable
(をラップしています(私の実装方法)。
Link
の中に
div
を設定できるようにします。
onMouseEnter
と
onMouseLeave
を追加しました。このため、少し複雑になりますが(例えば
span
に包まれた
div
とは動作が異なります。
span
).
もっと簡単な方法はないのでしょうか?
どのように解決するのですか?
私も同じような状況です。コンポーネントでスタイルを維持するパターンはとても気に入っていますが、ホバーステートは最後のハードルのように思えます。
私が行ったのは、ホバーステートが必要なコンポーネントに追加できるミキシンを書くことです。
このミキシンは
hovered
プロパティをコンポーネントの状態に追加します。このプロパティは、以下のように設定されます。
true
ユーザがコンポーネントのメイン DOM ノードにマウスを置いたときに、この値を
false
をクリックすると、その要素から離れることができます。
これで、コンポーネントのレンダー関数で、次のようなことができるようになる。
<button style={m(
this.styles.container,
this.state.hovered && this.styles.hover,
)}>{this.props.children}</button>
これで、毎回
hovered
状態が変化すると、コンポーネントは再レンダリングされます。
また、私はこのためにサンドボックスレポを作成し、これらのパターンのいくつかを自分でテストするために使用しています。私の実装の例を見たい場合は、こちらをご覧ください。
https://github.com/Sitebase/cssinjs/tree/feature-interaction-mixin
関連
-
[解決済み】React 17で動作するEnzymeアダプターはどれですか?
-
[解決済み] FontAwesomeの無料パッケージに含まれているアイコンのオブジェクト名はどこにあるのですか?
-
[解決済み] Webpack + Babelです。プリセット "es2015 "がディレクトリに相対して見つからなかった
-
[解決済み] React + TypeScript のエラーです。この呼び出しにマッチするオーバーロードがありません
-
[解決済み] react router dom v4でwebpack dev serverを構成する方法は?
-
[解決済み] プロップ `history` は `Router` で必須とマークされているが、その値は `undefined` である。
-
[解決済み] nextjsで異なる.envファイルを使用するには?
-
[解決済み] ESLintとTSLintの違い【クローズド】について
-
[解決済み] Reactコンポーネントに条件付きで属性を追加するにはどうすればよいですか?
-
[解決済み] ReactのインラインスタイルでbackgroundImageを設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンポーネントの定義に表示名がない react/display-name
-
[解決済み] reactでonloadを使うには?
-
[解決済み] react-router-domを使用する際に「Function components cannot be given refs」を回避するにはどうすればよいですか?
-
[解決済み] React + TypeScript のエラーです。この呼び出しにマッチするオーバーロードがありません
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] formcontrollabel - material-ui | Reactのデフォルトのtypography classを変更するには?
-
[解決済み] componentWillReceiveProps は名称が変更されました。
-
[解決済み] nextjsで異なる.envファイルを使用するには?
-
[解決済み] componentWillReceivePropsライフサイクルメソッドはいつ使用するのですか?
-
[解決済み] ESLintとTSLintの違い【クローズド】について