반응형
Vuejs 및 Vuex 작업 - 상태 코드 422로 요청 실패
저는 Laravel 5.5, Vue 2, Vuex로 시스템 코멘트를 작성하고 있습니다.댓글을 달 수가 없어요.콘솔에 두 가지 오류가 있습니다.
유형 오류: this.addComment가 함수가 아닙니다.
오류: 상태 코드 422에서 요청 실패
내 코드는 다음과 같습니다.
import { addComment } from '../../store/actions'
export default {
computed: {
addComment
},
vuex: {
actions: { addComment }
},
data () {...},
methods: {
sendComment: function () {
this.addComment({
commentable_id: this.id,
commentable_type: this.model,
content: this.content,
reply: this.reply
})
}
actions.js 코드
export const addComment = function ({dispatch}, comment) {
return axios.post('/comments', comment).then((response) => {
dispatch('ADD_COMMENT', response.data)
})
};
저의 모든 경로, 컨트롤러 및 돌연변이가 테스트되고 잘 작동합니다.
작업을 구성 요소로 가져올 필요는 없습니다.store
는 글로벌하게 등록됩니다.그래서 당신은 그저 전화하기만 하면 됩니다.addComment
다음과 같이:
this.$store.dispatch('addComment', {
commentable_id: this.id,
commentable_type: this.model,
content: this.content,
reply: this.reply
})
또한 퍼팅addComment
에computed
말이 안 되니 제거해야 합니다.
당신의 addComment 액션에서, 나는 그것이 불리는 것이라고 믿습니다.commit
것은 아니다.dispatch
:
export const addComment = function ({commit}, comment) {
return axios.post('/comments', comment).then((response) => {
commit('ADD_COMMENT', response.data)
})
}
내 스토어.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
export const state = {
comments: []
};
export const mutations = {
ADD_COMMENTS (state, comments) {
state.comments.push(...comments)
},
ADD_COMMENT (state, comment) {
if (comment.reply) {
let c = state.comments.find((c) => c.id === comment.reply);
if (c.replies === undefined) {
c.replies = []
}
c.replies.push(comment)
} else {
state.comments.push(comment)
},
DELETE_COMMENT () {...}
};
let store = new Vuex.Store({
state: state,
mutations: mutations
});
export default store;
My Form.vue 구성 요소:
import { addComment } from '../../store/actions'
import { mapActions } from 'vuex'
export default {
vuex: {
actions: { addComment }
},
data () {
return {
content: '',
loading: false
}
},
props: {
id: Number,
model: String,
reply: {
type: Number,
default: 0
}
},
methods: {
sendComment: function () {
this.loading = true;
this.$store.dispatch('addComment', {
commentable_id: this.id,
commentable_type: this.model,
content: this.content,
reply: this.reply
}).catch((error) => {
this.error = error.response.data
}).then(() => {
this.loading = false
})
}
}
}
언급URL : https://stackoverflow.com/questions/47484672/vuejs-and-vuex-actions-request-failed-with-status-code-422
반응형
'programing' 카테고리의 다른 글
숫자가 긴 엑셀 열을 csv로 저장하는 방법은? (0) | 2023.06.25 |
---|---|
SQL Server Express(2012)와 LocalDB 사이에 차이점이 있습니까? (0) | 2023.06.25 |
Bson 직렬화사전을 BSON에 직렬화할 때 예외 발생 (0) | 2023.06.25 |
유형 스크립트의 유형 오류 (0) | 2023.06.25 |
ORA-22905 - Select 문을 사용하여 테이블 유형을 쿼리할 수 있습니다. (0) | 2023.06.25 |