Vue


监听属性 watch

<h3>监听属性 watch</h3> <p>watch 监听基础类型,监听的对象不用 .value:</p> <pre><code class="language-javascript">&amp;lt;template&amp;gt;   &amp;lt;button @click=&amp;quot;change&amp;quot;&amp;gt;更改&amp;lt;/button&amp;gt; &amp;lt;/template&amp;gt; &amp;lt;script setup&amp;gt; import { ref, watch, stopWatch } from &amp;quot;vue&amp;quot; const num = ref(1) function change() {   num.value += 1 } watch(num, (newVal, oldVal) =&amp;gt; {   console.log(num.value) // 2   console.log(&amp;quot;new&amp;quot;, newVal) // 2   console.log(&amp;quot;old&amp;quot;, oldVal) // 1 }) &amp;lt;/script&amp;gt;</code></pre> <hr /> <p>watch 监听对象,要使用deep属性深度监听,监听的是地址值,所以下边的三行注释是一样的</p> <pre><code class="language-javascript">&amp;lt;template&amp;gt;   &amp;lt;button @click=&amp;quot;change&amp;quot;&amp;gt;更改&amp;lt;/button&amp;gt; &amp;lt;/template&amp;gt; &amp;lt;script setup&amp;gt; import { ref, watch } from &amp;quot;vue&amp;quot; let name = ref({   firstName: &amp;quot;Andy&amp;quot;,   lastName: &amp;quot;Zhou&amp;quot;, }) function change() {   name.value.lastName = &amp;quot;lalala&amp;quot; } watch(name, (newVal, oldVal) =&amp;gt; {   console.log(name.value)     // {firstName: 'Andy', lastName: 'lalala'}   console.log(&amp;quot;new&amp;quot;, newVal)  // {firstName: 'Andy', lastName: 'lalala'}   console.log(&amp;quot;old&amp;quot;, oldVal)  // {firstName: 'Andy', lastName: 'lalala'} }, {   deep: true, //deep 深度监视对象内的内容 }) &amp;lt;/script&amp;gt;</code></pre> <hr /> <p>watch 监听多个属性</p> <pre><code class="language-javascript">&amp;lt;template&amp;gt;   &amp;lt;button @click=&amp;quot;change&amp;quot;&amp;gt;更改&amp;lt;/button&amp;gt; &amp;lt;/template&amp;gt; &amp;lt;script setup&amp;gt; import { ref, watch } from &amp;quot;vue&amp;quot; const num1 = ref(9) const num2 = ref(90) function change() {   num1.value = 10   // num2.value = 100 } watch([num1, num2], (newVal, oldVal) =&amp;gt; {   console.log(&amp;quot;old&amp;quot;, oldVal)   console.log(&amp;quot;new&amp;quot;, newVal)   console.log(num1.value) }) &amp;lt;/script&amp;gt;</code></pre> <hr /> <p>watchEffect 立即运行一个函数,全自动监听其依赖</p> <pre><code class="language-javascript">&amp;lt;template&amp;gt; &amp;lt;button @click=&amp;quot;change1&amp;quot;&amp;gt;更改1&amp;lt;/button&amp;gt; &amp;lt;button @click=&amp;quot;change2&amp;quot;&amp;gt;更改2&amp;lt;/button&amp;gt; &amp;lt;/template&amp;gt; &amp;lt;script setup&amp;gt; import { ref, watch, watchEffect } from &amp;quot;vue&amp;quot; let firstname = ref(&amp;quot;Andy&amp;quot;) let lastname = ref(&amp;quot;Zhou&amp;quot;) function change1() { firstname.value += &amp;quot;~&amp;quot; } function change2() { lastname.value += &amp;quot;~&amp;quot; } watchEffect(()=&amp;gt;{ console.log(firstname.value) console.log(lastname.value) }) &amp;lt;/script&amp;gt;</code></pre>

页面列表

ITEM_HTML