我正在尝试使用.filter()
方法修改Vue.js中列表中的元素。新元素来自Pusher。我正在监听事件,并尝试像这样更新元素:
users.filter((obj) => {
Echo.private(`user.${obj.id}`).listen('.userupdated', (e) => {
return obj = e.user; // or return e.user; also doesn't work
});
});
这不起作用。这两个对象的结构都相同,但是通过Pusher传入的新对象包含更新的信息。
另一方面,当我尝试修改属性时,它起作用:
users.filter((obj) => {
Echo.private(`user.${obj.id}`).listen('.userupdated', (e) => {
return obj.name = e.user.name;
});
});
有人可以指导我我做错了什么吗?是否不允许这样替换整个元素?任何帮助将不胜感激。
答案 0 :(得分:1)
根据MDN,这是什么过滤器:
filter()方法创建一个具有所有通过元素的新数组 通过提供的功能实现的测试。
因此,您要做的基本上是错误地使用Filter。 您应该做的是在一个事件上触发对旧数组的迭代,并对其进行更新。
我的建议:在事件触发时,调用一个功能达到该目的的函数,并使用新的值替换该函数,然后以编程方式对其进行处理!