$ref 属性の導入と使用

ここに画像の説明を挿入します

Vue.js では、$refこれは Vue コンポーネントの DOM 要素またはサブコンポーネント インスタンスにアクセスするために使用される特別なプロパティです。これにより、コンポーネント内の DOM 要素またはサブコンポーネントに直接アクセスし、必要に応じてそれらを操作または変更できます。以下は、$ref簡単な紹介と概念的な区別を示すための詳細な紹介と例のデモンストレーションです。

$ref 属性を使用して DOM 要素にアクセスする

  1. テンプレートに属性を追加しますref

    まず、Vue コンポーネント テンプレートで、ref属性を追加することで DOM 要素を識別できます。例えば:

    <template>
      <div>
        <button ref="myButton">点击我</button>
      </div>
    </template>
    
  2. DOM 要素にアクセスします。

    その後、オブジェクト経由で識別された DOM 要素にthis.$refsアクセスできるようになります。refVue コンポーネントの JavaScript 部分では、これを行うことができます。

    export default {
          
          
      mounted() {
          
          
        // 访问DOM元素
        const buttonElement = this.$refs.myButton;
        
        // 对DOM元素进行操作
        buttonElement.style.backgroundColor = 'blue';
      }
    }
    

$ref 属性を使用して子コンポーネントのインスタンスにアクセスします

DOM 要素へのアクセスに加えて、$refサブコンポーネントのインスタンスへのアクセスにも使用できます。これは、親コンポーネント内の子コンポーネントと通信する場合に便利です。

  1. 親コンポーネントにrefプロパティを追加します。

    親コンポーネントのテンプレートでは、refプロパティを使用して子コンポーネントのインスタンスを参照できます。例えば:

    <template>
      <div>
        <child-component ref="childRef"></child-component>
      </div>
    </template>
    
  2. サブコンポーネント インスタンスにアクセスします。

    this.$refsその後、オブジェクトを通じて子コンポーネント インスタンスにアクセスできるようになります。親コンポーネントの JavaScript セクションで、これを行うことができます。

    import ChildComponent from './ChildComponent.vue';
    
    export default {
          
          
      components: {
          
          
        ChildComponent
      },
      mounted() {
          
          
        // 访问子组件实例
        const childInstance = this.$refs.childRef;
        
        // 调用子组件的方法
        childInstance.doSomething();
      }
    }
    

これらの例は、 ref の使用方法を示しています在Vue.js中,。 ' は、Vue コンポーネント内の DOM 要素またはサブコンポーネント インスタンスにアクセスするために使用される特別な属性です。これにより、コンポーネント内の DOM 要素またはサブコンポーネントに直接アクセスし、必要に応じてそれらを操作または変更できます。以下は、「ref」が Vue コンポーネントの DOM 要素またはサブコンポーネント インスタンスにアクセスするために使用される特別な属性であることについてです。これにより、コンポーネント内の DOM 要素またはサブコンポーネントに直接アクセスし、必要に応じてそれらを操作または変更できます。以下は ` に関連していますre f ' は、 VueコンポーネントDOM要素またはサブコンポーネント インスタンスにアクセスするために使用される特別な属性です。これにより、コンポーネント内のDOM要素またはサブコンポーネントに直接アクセスし、必要に応じてそれらを操作または変更できます。以下は、' ref ' に関する詳細な紹介と例のデモンストレーションです。

$ref 属性を使用して DOM 要素にアクセスする

  1. テンプレートに属性を追加しますref

    まず、Vue コンポーネント テンプレートで、ref属性を追加することで DOM 要素を識別できます。例えば:

    <template>
      <div>
        <button ref="myButton">点击我</button>
      </div>
    </template>
    
  2. DOM 要素にアクセスします。

    その後、オブジェクト経由で識別された DOM 要素にthis.$refsアクセスできるようになります。refVue コンポーネントの JavaScript 部分では、これを行うことができます。

    export default {
          
          
      mounted() {
          
          
        // 访问DOM元素
        const buttonElement = this.$refs.myButton;
        
        // 对DOM元素进行操作
        buttonElement.style.backgroundColor = 'blue';
      }
    }
    

$ref 属性を使用して子コンポーネントのインスタンスにアクセスします

DOM 要素へのアクセスに加えて、$refサブコンポーネントのインスタンスへのアクセスにも使用できます。これは、親コンポーネント内の子コンポーネントと通信する場合に便利です。

  1. 親コンポーネントにrefプロパティを追加します。

    親コンポーネントのテンプレートでは、refプロパティを使用して子コンポーネントのインスタンスを参照できます。例えば:

    <template>
      <div>
        <child-component ref="childRef"></child-component>
      </div>
    </template>
    
  2. サブコンポーネント インスタンスにアクセスします。

    this.$refsその後、オブジェクトを通じて子コンポーネント インスタンスにアクセスできるようになります。親コンポーネントの JavaScript セクションで、これを行うことができます。

    import ChildComponent from './ChildComponent.vue';
    
    export default {
          
          
      components: {
          
          
        ChildComponent
      },
      mounted() {
          
          
        // 访问子组件实例
        const childInstance = this.$refs.childRef;
        
        // 调用子组件的方法
        childInstance.doSomething();
      }
    }
    

これらの例は、プロパティを使用して DOM 要素およびサブコンポーネント インスタンスにアクセスする方法$ref、およびそれらと対話する方法を示しています。$refコードの保守が困難になる可能性があるため、その使用には注意が必要であり、大規模なアプリケーションでの過度の使用は避けるようにしてくださいほとんどの場合、コンポーネント間の通信と操作には Vue.js のデータ バインディングとイベント配信メカニズムを使用することが推奨されます。

上記では簡単な使い方を紹介しましたが、次は少し難易度を上げて高次元の統合を行っていきます:
$refプロパティは主に Vue.js の DOM 要素やサブコンポーネント インスタンスにアクセスするために使用されますが、一部の複雑な用途にも使用できます。使用状況。例:

  1. フォーム検証$ref:フォームを送信する前に、クライアント側の検証のためにフォーム要素にアクセスするために使用できます。例えば:

    <template>
      <div>
        <form ref="myForm" @submit="submitForm">
          <input type="text" ref="inputField" required>
          <button type="submit">提交</button>
        </form>
      </div>
    </template>
    
    export default {
          
          
      methods: {
          
          
        submitForm() {
          
          
          // 访问表单和输入字段
          const form = this.$refs.myForm;
          const input = this.$refs.inputField;
          
          if (form.checkValidity()) {
          
          
            // 表单验证通过,执行提交操作
            // ...
          } else {
          
          
            // 表单验证失败,处理错误
            // ...
          }
        }
      }
    }
    
  2. 動的レンダリング コンポーネント: これらを使用して、$refサブコンポーネントを動的にレンダリングおよび制御できます。たとえば、特定の条件に基づいてさまざまな子コンポーネントをレンダリングします。

    <template>
      <div>
        <button @click="toggleComponent">切换组件</button>
        <component :is="currentComponent" ref="dynamicComponent"></component>
      </div>
    </template>
    
    export default {
          
          
      data() {
          
          
        return {
          
          
          currentComponent: 'ChildComponentA'
        };
      },
      methods: {
          
          
        toggleComponent() {
          
          
          // 根据条件切换子组件
          this.currentComponent = (this.currentComponent === 'ChildComponentA') ? 'ChildComponentB' : 'ChildComponentA';
          
          // 访问动态渲染的子组件实例
          const dynamicComponent = this.$refs.dynamicComponent;
          // 可以调用子组件的方法或访问其属性
          dynamicComponent.doSomething();
        }
      }
    }
    
  3. サードパーティ ライブラリの操作: サードパーティ JavaScript ライブラリと統合する必要がある場合は、それを使用して$refDOM 要素にアクセスしたり、ライブラリ内のオブジェクトをインスタンス化したりできます。たとえば、チャート ライブラリまたはマップ ライブラリと統合します。

    <template>
      <div>
        <div ref="chartContainer"></div>
      </div>
    </template>
    
    export default {
          
          
      mounted() {
          
          
        // 初始化图表库,并将其绘制到DOM元素中
        const chart = new Chart(this.$refs.chartContainer, {
          
           /* 配置选项 */ });
        chart.draw();
      }
    }
    

vue以上がのプロパティの説明です$ref

この記事を書く前に、vueこれらのキー属性をある程度理解して使用していましたが、これらのキー属性について深く理解していなかったために、同様の問題に遭遇することがありました。重要なことは避け、実際的なことは無視して、皆さんが一歩ずつ前進できることを願っています、一緒に前進しましょう!

おすすめ

転載: blog.csdn.net/weixin_53742691/article/details/132701427