: https://xn--xy1bk56a.run/axios/guide/usage.html#post-%EC%9A%94%EC%B2%AD
axios.post('url', data);
: https://xn--xy1bk56a.run/axios/guide/usage.html#post-%EC%9A%94%EC%B2%AD
axios.all([]);
: https://github.com/axios/axios/issues/2890
: https://www.pluralsight.com/guides/all-need-to-know-about-axios
export const fetchMovieDetail = async (id) => {
const [movieCredits, movieData] = await axios.all([
fetchMovieCredits(id),
fetchMovie(id),
]);
const result = {
cast: movieCredits.data.cast,
crew: movieCredits.data.crew,
...movieData.data,
};
return result;
};
axios.all의 인자로 배열을 전달하고, 리턴도 배열을 통해 각 api 요청의 response 객체를 받을 수 있다.
this.$router.replace({
path: this.$route.path,
query: {
q1: q1,
}
})
$router.replace()는 $router.push()와 다르게 히스토리 스택을 쌓지 않는다. https://router.vuejs.org/kr/guide/essentials/navigation.html#router-replace-location
this.$router.replace()
.catch(err => console.error(err));
this.$router.push()
.catch(err => console.error(err));
이때, 발생한 에러 정보를 가진 에러 객체를
.catch()
를 이용해서 받을 수 있다.
const path = `/products/${id}`
if (this.$route.path !== path) this.$router.push(path)
const currentQuery = this.$route.query;
if (!!Object.keys(currentQuery).length) {
// movieId 쿼리가 같은 경우
if (currentQuery.movieId == this.movieId) {
console.log(
"movieId값이 동일하여 페이지를 이동하지 않습니다."
);
return;
}
// movieId 쿼리가 다른 경우
else {
// 현재 라우트 경로를 유지하면서, 쿼리스트링만 변경하기
return this.$router.replace({
path: this.$route.path,
query: {
movieId: encodeURIComponent(this.movieId),
},
});
}
}
<textarea
name="contents"
id="contents"
rows="5"
v-model="contents"
maxlength="10"
oninput="javascript: if(this.value.length > this.maxLength) { this.value = this.value.substr(0, this.maxLength); }"
></textarea>