通过Vue.js 3实现增强的组合性和响应性。
P粉935883292
P粉935883292 2023-08-03 15:58:35
0
2
407
<p>给定以下在Vue.js 3中的组合式 'useNumbers.js',我希望组件中的 'numbers' 具有响应性。但是,在一个组件中添加新的值到 'numbers' 中并不会在第二个组件中反映出来。<br /><br />useNumbers.js:</p><p><br /></p> <pre class="brush:php;toolbar:false;">import { ref } from 'vue'; export default function() { const numbers = ref([1, 2, 3, 4, 5]); const addNumber = num =&gt; { numbers.value.push(num); } const filterNumber = minNum =&gt; { return numbers.value.filter(curNum =&gt; curNum &gt;= minNum); } return { numbers, addNumber, filterNumber } }</pre> <p>Component A:</p> <pre class="brush:php;toolbar:false;">&lt;template&gt; &lt;div&gt; &lt;h1&gt;Child component&lt;/h1&gt; &lt;p&gt;{{ numbers }}&lt;/p&gt; &lt;button @click="addNumber(45)"&gt;Add 45&lt;/button&gt; &lt;div class="line"&gt;&lt;/div&gt; &lt;GrandChild /&gt; &lt;/div&gt; &lt;/template&gt; &lt;script setup&gt; import useNumbers from '../composables/useNumbers'; import GrandChild from './GrandChild.vue'; const { numbers, addNumber } = useNumbers() &lt;/script&gt;</pre> <p>Component B:</p> <pre class="brush:php;toolbar:false;">&lt;template&gt; &lt;div&gt; &lt;h1&gt;GreatGrandChild component&lt;/h1&gt; &lt;p&gt;{{ numbers }}&lt;/p&gt; &lt;div class="line"&gt;&lt;/div&gt; &lt;/div&gt; &lt;/template&gt; &lt;script setup&gt; import useNumbers from '../composables/useNumbers'; const { numbers } = useNumbers(); &lt;/script&gt;</pre> <p>每当我在组件A中点击按钮(将45添加到数组中),这个变化不会在组件B中反映出来。我知道,像解构赋值这样的操作会导致丢失响应性。</p> <pre class="brush:php;toolbar:false;">const { numbers, addNumber } = useNumbers()</pre> <p>破坏了响应性。我尝试使用toRef和toRefs进行了一些尝试,但目前还没有找到解决方案。</p>
P粉935883292
P粉935883292

最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!