如果 selectedLeague 已更改,我正在嘗試重新分配元件
<label class="label">Select league</label> <div class="selector"> <v-select v-model="selectedLeague" :dropdown-should-open="dropdownShouldOpen" :options="leagues" label="displayLeague" placeholder="Select a league" /> </div> <div v-if="selectedLeague"> <LeagueTopScorers :is="selectedLeague" :selectedLeague="selectedLeague.id.toString()" /> </div>
在 LeagueTopScorers 組件中,我正在獲取 API 以獲取選定聯賽中的最佳得分手。
我嘗試過:watch、v-on:、created()
P粉3443557152023-12-28 15:00:30
確實當selectedLeague
更改時重新渲染1 ,但它不會重新安裝。
只有當 selectedLeague
從 falsy 值變更為 truthy 值時才會掛載(因為此時 v-if< /code> 變更)。
您的問題存在一些問題:
v-select
是什麼,
是什麼,或:is
屬性在 ##.
是
vue-select 或 Vuetify 選擇元件 在
上的工作方式與在
上的工作方式相同。提示:不會,除非你自己編碼,我對此表示懷疑
的init 生命週期掛鉤中(例如:
onMounted)在您將
selectedLeague 中儲存的物件替換為另一個物件。
2:
const leagueId = computed(() => selectedLeague?.id.toString() || '')...並在
v-if、
:key 和
:selectedLeague 中使用它:
<LeagueTopScorers v-if="leagueId" :selectedLeague="leagueId" :key="leagueId" />(沒有
leagueId 註解:
更改時,上面都會建立一個
leagueId 不為 false 時渲染一個。我相信這就是您在技術上想要實現的目標
3#。
1 - 要驗證,請使用onUpdated(() => console.log('updated...'))代码>
2 - 如果selectedLeague,則使用
selectedLeague.value?.id.toString()是一個
ref
#3 - 同時,我確信無需創建
leagueId 更改時,但如果沒有更多詳細資訊和/或上下文,我無法提供更多幫助