vue 关于计算属性的奇怪问题

我通过父组件传递给子组件一个数组couponlist,然后在子组件里声明了这个couponList 并通过计算属性对它进行了处理 但是我这里计算属性coupons居然是undefined,倒是在mounted里边通过打印this.couponList能获取到处理之后的数组 这就奇怪了 coupons怎么会是undefined呢
export default {

      props: ['couponList'],
      created() {
           
      },
      computed: {
           coupons() {
                return this.couponList.forEach((item) => {
                     item.createTime = formatDate(item.createTime,0)
                     item.endTime = formatDate(item.endTime,0)
                })
           }
      },
      mounted() {
              console.log(this.couponList)
      }
}
阅读 3.4k
3 个回答

返回 foreach 了,且最好不要在子组件里修改父组件的变量

return this.couponList.map(item => Object.assign({}, item, {
  createTime: formatDate(item.createTime,0)
  endTime: formatDate(item.endTime,0)
}))

或者支持对象展开的话

return this.couponList.map(item => ({
  ...item,
  createTime: formatDate(item.createTime,0)
  endTime: formatDate(item.endTime,0)
}))

forEach函数返回的就是 undefined,map 处理吧。

这个主要是你return的东西不懂,你首先要知道forEach其实是一个没有返回值的函数,他内部的构成其实是一个包含了item和index的回调,没有任何的返回值的。所以你会拿到underfind,这时候使用map语法才是最佳选择。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题