我正在嘗試列舉 Vue 組件的實體以確保唯一的 ID,并為此使用簡單的生成器。通常我會在函式之外啟動生成器setup:
const idGen = generateIds("component:my-component");
export default {
setup() {
const id = idGen.next().value;
return {
id, // e.g. "component:my-component/0042"
};
},
};
但是對于<script setup>糖,我不確定這是如何完成的。<script>我知道我可以在另一個只會執行一次的塊中運行副作用:
<script>
const idGen = generateIds("component:my-component");
</script>
但是我不知道我要訪問我的共享idGen以<script setup>增加列舉數并獲取唯一的 id。
<script setup>
// Where do I get idGen from the above <script>?
const id = idGen.next().value;
</script>
在使用糖時,我能想到的唯一方法<script setup>是在單獨的檔案中啟動生成器:
<script setup>
import { idGen } from "./id-generator.js";
const id = idGen.next().value;
</script>
唯一的問題是,為這個非常屬于組件的微小邏輯創建一個單獨的檔案有點煩人,所以如果可以的話,我會避免它。
uj5u.com熱心網友回復:
編輯:原來順序是無關緊要的
any<script>將正常運行
里面的代碼<script setup>被轉換/編譯成一個組合 API “setup” 函式,當它被呼叫時, other 中的所有頂級代碼<script>都已經執行,因此idGen已經可用
所以
忽略這個答案的其余部分
<script setup>大多數使用另一個的vue3示例<script>總是顯示順序
<script setup></script>
<script></script>
在你的情況下,這是行不通的。
但是,如果腳本按此順序
<script>
const idGen = generateIds("component:my-component");
</script>
然后
<script setup>
const id = idGen.next().value;
</script>
然后idGen將在內部可用<script setup>
注意:您可以<script>在 SFC 中按任意順序擁有任意數量的標簽,但只能有一個<script setup>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486813.html
上一篇:鍵入Vue函式的更好方法?
下一篇:使用Vue.js過濾物件
