LoginSignup
2
0

More than 1 year has passed since last update.

【Stimulus】targetがある時だけ関数を実行する方法

Last updated at Posted at 2022-03-28

はじめに

Rails7 で JavaScript を利用するときは Stimulus を使うのがデフォルトになっています。

特定のページで関数を実行する方法を書き残しておきます。

環境

  • Rails 7.0.22
  • Ruby 3.1.1
  • Rspec 3.10.0
  • stimulus-rails 1.0.4

やりたい事

特定のページの時だけクラスを削除する関数を実行する

本文

Stimulus のライフサイクルコールバックと呼ばれる特別なメソッドを使用すると目的を達成できます。

TargetConnected()を利用する

class_controller.js
import { Controller } from "@hotwired/stimulus";

// Connects to data-controller="class"
export default class extends Controller {
  static target = ["class"];

  classTargetConnected() { //ターゲット名が入る
    const target = this.classTarget // これでdata-target='class'がついている要素が取得できる
    target.classList.remove("remove-target");
  }
}

target.html.erb
<div data-controller='class'> <!--data-controllerがない起動しない -->
  <p>target</p>
  <p class= 'remvoe-target' data-class-target='class'>remove-target</p>
  <!--data-class-targetがDOMに接続されるとclassTargetConnectedが実行される -->
</div>

参考

公式リファレンスーライフサイクルコールバック

Github stimulus

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0