Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알파회계
- 자료구조와함께배우는알고리즘입문
- /etc/network/interfaces
- Kernighan의 C언어 프로그래밍
- 코드로배우는스프링부트웹프로젝트
- d
- 데비안
- ㅒ
- iterator
- 자바편
- 이터레이터
- 서버설정
- 페이징
- 선형대수
- 구멍가게코딩단
- 처음 만나는 AI 수학 with Python
- 네트워크 설정
- 처음 만나는 AI수학 with Python
- GIT
- 목록처리
- 자료구조와 함께 배우는 알고리즘 입문
- 스프링부트핵심가이드
- 리눅스
- 코드로배우는스프링웹프로젝트
- 스프링 시큐리티
- 티스토리 쿠키 삭제
- network configuration
- 친절한SQL튜닝
- baeldung
- resttemplate
Archives
- Today
- Total
bright jazz music
blog21 : 글 수정 화면 만들기 본문
1. 수정화면을 표현할 뷰 컴포넌트 파일 만들기(EditView.vue)
2. 라우터에 등록
// index.ts
import { createRouter, createWebHistory } from "vue-router";
import HomeView from "../views/HomeView.vue";
import WriteView from "../views/WriteView.vue"
import ReadView from "../views/ReadView.vue";
import EditView from "../views/EditView.vue"; //경로를 적어줌으로써 import 필요
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: "/", //루트 경로라면
name: "home", //home 뷰를 불러온다.
component: HomeView,
},
{
path: "/write",
name: "write",
component : WriteView //import가 필요하다.
},
{
// path: "/read",
path: "/read/:postId", //파라미터를 받을 수 있도록 설정 ######
name: "read",
component: ReadView,
props: true, //해당 변수는 ReadView 컴포넌트에서 받을 수 있게 하겠다
},
{//수정
path:"/edit/:postId", //postId를 같이 넘겨준다.
name: "edit",
component: EditView,
props: true
}
],
});
export default router;
3. ReadView에 수정 버튼을 만들고 연결해주기
<!-- WriteView.vue -->
<script setup lang="ts">
import {ref} from "vue";
import axios from 'axios'
import {useRouter} from "vue-router";
const title = ref("") //입력받은 값을 저장할 변수 선언
const content = ref("") //입력받은 값을 저장할 변수 선언
const router = useRouter();
const post = ref({
id: 0,
title: "",
content: "",
})
const props = defineProps({
postId: {
type: [Number, String],
require: true
},
});
//해당 포스트 Id보내서 객체 가져온 뒤 다시 뿌려주기
axios.get(`/api/posts/${props.postId}`).then((response) => {
post.value = response.data;
});
//수정값 보내기. 그리고 home으로 돌아가기
const edit = () => {
axios.patch(`/api/posts/${props.postId}`, post.value).then(() => {
router.replace({name: "home"})
});
};
</script>
<template>
<div class="mt-2">
<el-input v-model="post.title"/>
</div>
<div class="mt-2">
<el-input v-model="post.content" type="textarea" rows="15"></el-input>
</div>
<div class="mt-2">
<el-button type="warning" @click="edit()">수정완료</el-button> <!--눌렀을 때 write() 함수 호출 -->
</div>
</template>
<style>
</style>
홈에서, "제목 바뀌네1" 을 클릭한다
화면이 로딩되면 처음에는 초기값을 화면에 뿌리고 있다가 axios가 동작하며 값을 가져오면 화면에 다시 표시해준다.
당연히 DB도 바뀌어있다.
'Projects > blog' 카테고리의 다른 글
blog21 : 배포 준비(빌드) (0) | 2023.02.06 |
---|---|
blog22 : 화면 꾸미기 (0) | 2023.02.04 |
blog20 : 글 내용 화면 만들기 (0) | 2023.02.04 |
blog19 : 글 리스트 화면 만들기 (0) | 2023.02.03 |
blog18 : CORS문제 해결 (server.proxy) (0) | 2023.02.03 |
Comments