Pinia InternalError: Quasar에서 q-list를 사용할 때 재귀 오류가 너무 많습니다.
P粉262073176
2023-09-01 20:26:11
<p>Quasar 구성 요소에서 Pinia Store를 사용하는 동안 <code>InternalError: Too much recursion</code> 오류가 발생했으며 제가 아는 모든 조치를 취했지만 수정하지 않았습니다. </p><p>
여기서 조언을 받을 수 있나요? </p>
<p>이것은 QList 구성 요소를 호출하는 <code>IndexPage.vue</code>입니다. </p>
<pre class="brush:php;toolbar:false;"><템플릿>
<q-페이지>
<div class="q-pa-md" style="최대 너비: 350px">
<QList />
</div>
</q-페이지>
</템플릿>
<스크립트>
'src/comComponents/QList.vue'에서 QList를 가져옵니다.
기본값 내보내기 {
구성요소: {
QList
}
}
<p>이것은 내 <code>QList.vue</code> 구성 요소입니다. </p>
<pre class="brush:php;toolbar:false;"><템플릿>
<div v-if="loading">카레간도...</div>
<q-list v-else 테두리 구분 기호>
<q-item v-for="testData의 항목" :key="item.id" 클릭 가능한 V-리플>
<q-item-section>{{ item.title }}</q-item-section>
</q-item>
</q-목록>
</템플릿>
<스크립트>
'../stores/teste'에서 { testeStore } 가져오기
'vue'에서 import { 정의 구성 요소, 계산, onMounted };
기본 정의 내보내기({
설정 () {
const store = testeStore();
onMounted(() => {
store.loadData();
});
const testData = 계산(() =>store.getData());
const loading = 계산(() =>store.$state.loading);
반품 {
테스트데이터,
로드 중
}
}
})
<p>还有我的 <code>testeStore.js</code> 商店:</p>
<pre class="brush:php;toolbar:false;">'pinia'에서 { 정의 저장소 } 가져오기
'../assets/data/testes.json'에서 testeData 가져오기
const testeStore = 정의스토어({
id: 'teste',
상태: () => ({
데이터: [],
로드 중: 거짓,
}),
게터: {
getData: 상태 => 상태.데이터,
},
작업: {
로드데이터() {
노력하다 {
this.loading = true
this.data = testeData;
} 잡기(오류) {
console.log(`고환 가져오기 오류: ${{ error }}`)
} 마지막으로 {
this.loading = 거짓
}
}
}
})</pre>
<p>당신은 여기에서 내 정보가 아닌 사실을 알고 있습니다.这是来自控system台的一段 vue warning:</p>
<pre class="brush:php;toolbar:false;">[Vue 경고]: 스케줄러 플러시 실행 중 오류가 처리되지 않았습니다. 이는 Vue 내부 버그일 가능성이 높습니다. https://new-issue.vuejs.org/?repo=vuejs/core에서 문제를 열어주세요.
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
<QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" >
at <QList key=1 bordered="" 구분 기호 = "" ></pre></p>
방금 stackblitz를 확인한 결과 자신의 QList 구성 요소와 Quasar의 내장 "q-list" 구성 요소 사이에 이름 지정 충돌이 있는 것 같습니다. Vue는 구성 요소 이름을 대소문자를 구분하지 않고 처리하므로 "q-list"와 "QList"를 동일한 구성 요소로 해석합니다.
이 문제를 해결하려면 QList 구성 요소의 이름을 "MyQList"와 같이 Quasar 구성 요소와 충돌하지 않는 다른 이름으로 바꾸거나 별칭을 사용하여 Quasar "q-list" 구성 요소를 가져올 수 있습니다.
从 'quasar' 导入 { Qlist as QuasarList }