gpt4 book ai didi

vue.js - 计算属性中的意外副作用

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:06 34 4
gpt4 key购买 nike

我不确定为什么使用以下代码会在计算机属性错误中产生意外的副作用。

错误:

 ✘  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://v2.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

关于vue.js - 计算属性中的意外副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49869081/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com