반응형
계산된 속성에 예기치 않은 부작용이 있습니다.
아래 코드와 함께 컴퓨터 속성 오류로 인해 예상치 못한 부작용이 발생하는 이유를 모르겠습니다.
오류:
✘ https://google.com/#q=vue%2Fno-side-effects-in-computed-properties Unexpected side effect in "orderMyReposByStars" computed property
src/components/HelloWorld.vue:84:14
return this.myRepos.sort((a, b) => a.stargazers_count < b.stargazers_count)
html:
<div v-if="myRepos && myRepos.length > 0">
<h3>My Repos</h3>
<ul>
<li v-for="repo in orderMyReposByStars" v-bind:key="repo.id">
<div class="repo">
{{repo.name}}
<div class="pull-right">
<i class="fas fa-star"></i>
<span class="bold">{{repo.stargazers_count}}</span>
</div>
</div>
</li>
</ul>
</div>
js:
export default {
name: 'HelloWorld',
data () {
return {
myRepos: null, <-- THIS IS ULTIMATELY AN ARRAY OF OBJECTS
}
},
computed: {
orderMyReposByStars: function () {
return this.myRepos.sort((a, b) => a.stargazers_count < b.stargazers_count)
},
...
여기 https://vuejs.org/v2/guide/list.html#Displaying-Filtered-Sorted-Results에 있는 문서에 따르면 이것이 올바른 것으로 보입니다.
.sort
는 원래 어레이를 변환합니다.
이를 방지하려면 정렬하기 전에 어레이를 복제하십시오.
.slice()
어레이를 복제하는 가장 간단한 방법 중 하나입니다.https://stackoverflow.com/a/20547803/5599288 를 참조해 주세요.
return this.myRepos.slice().sort((a, b) => a.stargazers_count < b.stargazers_count)
곁에서 얘기하자면null.sort()
또는null.slice()
에러가 발생합니다.초기값을 설정하는 것이 좋을지도 모릅니다.myRepos
배열을 비우다[]
대신null
2021년 쉽고 읽기 쉬운 솔루션...
사용 구문만:
computed: {
orderMyReposByStars: function () {
return [...this.myRepos].sort((a, b) => a.stargazers_count < b.stargazers_count)
},
}
마이 솔루션은 정렬 전에 필터를 추가하는 것입니다.
Array.filter(() => true).sort((a, b) => a.menu_order - b.menu_order);
언급URL : https://stackoverflow.com/questions/49869081/unexpected-side-effect-in-computed-property
반응형
'programing' 카테고리의 다른 글
element-ui(현재는 element-plus)를 Vue3 프로젝트에 추가하려면 어떻게 해야 합니까? (0) | 2022.08.17 |
---|---|
Jackson JSON을 사용하여 JSON 문자열을 맵으로 변환하는 방법 (0) | 2022.08.17 |
VueX 및 NuxtJ의 지속 상태s (0) | 2022.08.16 |
푸셔가 정의되지 않았습니다!Laravel 5.4 (Laravel Echo 포함) (0) | 2022.08.16 |
부트스트랩 Vue(테이블의 바인딩된 항목 데이터를 기반으로 한 확인란 입력) (0) | 2022.08.16 |