如何更新vuex里面嵌套在对象里面的数组的值

#如何更新vuex里面嵌套在对象里面的数组的值

#定义两个accessMenuList对象
对象定义

#对象赋值方法

userMessageFill(state, userMSG) {
      state.userMessage.userid = userMSG.userDto.userid
      state.userMessage.name = userMSG.userDto.name
      state.userMessage.password = userMSG.userDto.password
      userMSG.userDto.roleList.forEach(tempRole => {
        tempRole.menuList.forEach(tempMenu => {
          if (!state.userMessage.accessMenuList.includes(tempMenu.menuid)) {            state.userMessage.accessMenuList.push(tempMenu.menuid)
          }
          if (!state.accessMenuList.includes(tempMenu.menuid)) {
            state.accessMenuList.push(tempMenu.menuid)
          }
        })
      })
    }

##调用赋值方法并打印

submitForm() {
      // 选中整个form表单,触发"所有"验证
      this.$refs.loginForm.validate((valid) => {
        if (valid) {
          this.$http
            .post('/rights/user', {
              name: this.loginForm.userId,
              password: this.loginForm.userPassword
            })
            .then((res) => {
              if (res.status === 200) {
                local.set('token', 'Bearer ' + res.data.token.accessToken) // token
                // local.set('user', res.data.user) // 用户
                this.$router.push('/index') // 跳转到首页
                this.$store.commit('userMessageFill', res.data)
                this.$store.commit('dataInit')
                console.log('嵌套在对象里面的数组', this.$store.state.userMessage.accessMenuList.length)
                console.log('直接定义的数组', this.$store.state.accessMenuList.length)
              }
            })
            .catch((res) => {})
        } else {
          return false
        }
      })
    }

##打印结果
打印结果
如上所示,当数组嵌套在对象时赋值失败,而不存在嵌套关系时则成功赋值,是否还存在其它方式可以格式嵌套在对象里面的数组呢?

##已解决
2022-6-8 11:40:13:不存在这种情况,代码里面把初始化语句放到赋值语句后面了,所以说每次赋值完成再打印出来都是空值……………………..

mouyong
最佳答案

this.$set('userMessage', 'accessMenuList', newValue)

this.$set('userMessage', 'a.b', newValue)

1年前 评论
讨论数量: 1
mouyong

this.$set('userMessage', 'accessMenuList', newValue)

this.$set('userMessage', 'a.b', newValue)

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!