programing

Vuex 작업이 속성 값에 액세스할 수 없음

prostudy 2022. 4. 13. 20:57
반응형

Vuex 작업이 속성 값에 액세스할 수 없음

나는 내 Vuex 작업에 데이터를 전달할 수 없을 것 같다.나는 항상 오류 메시지를 받는다.TypeError: can't access property x, data is undefined재산가치를 넘기는 몇 가지 다른 접근법을 취했지만 효과가 없었다.내 코드 좀 봐, 내가 뭘 잘못하고 있는 거야?

저장:

import axios from 'axios'

export default {
  namespaced: true,
  state: {
    announcements: []
  },
  getters: {},
  actions: {
    createAnnouncement({ commit }, courseId, data) {
      return new Promise((resolve, reject) => {
        axios
        .post(`teacher/courses/announcements/create/${courseId}`, { title: data.title, message: data.message })
        .then((response) => {
          commit('ADD_ANNOUNCEMENT', response.data.data)
          resolve(response)
        })
        .catch((error) => { reject(error) })
      })
    }
  },
  mutations: {
    ADD_ANNOUNCEMENT(state, newAnnouncement) {
      state.announcements.push(newAnnouncement)
    }
  }
}

구성 요소:

<script>
import { mapActions, mapGetters } from 'vuex'

export default {
  data() {
    return {
      title: '',
      message: '',
    }
  },
  computed: {
    ...mapGetters('courses', ['getCourseData'])
  },
  methods: {
    ...mapActions('announcements', ['createAnnouncement']),
    onSubmit() {
      const { announcementTitle, announcementMessage } = this
      const courseId = this.getCourseData.id
      this.createAnnouncement(courseId, { title: announcementTitle, message: announcementMessage }) 
    }
  }
}
</script>

동작은 컨텍스트와 선택적 페이로드라는 두 개의 인수만 허용한다.

작업을 다음으로 변경해 보십시오.

createAnnouncement({ commit }, { courseId, data }) {
  //...
}

로 그것을 발송하다.

const payload = {
  courseId: this.getCourseData.id,
  data: {
    title: this.announcementTitle,
    message: this.announcementMessage
  }
}
this.createAnnouncement(payload)

https://vuex.vuejs.org/api/#actions를 참조하십시오.

참조URL: https://stackoverflow.com/questions/68538100/vuex-action-cant-access-property-value

반응형