클릭 시 중첩된 JSON-Data 탐색
상황
필터링하고 재정렬하고 싶은 복잡한 JSON 데이터가 있어.내 데이터는 깊이 중첩된 프로젝트 모음입니다.각 프로젝트에는task_lists
, , , 포함이 되어 있다.tasks
.
그래서 나의 JSON-tree의 구조는 대략 다음과 같다: 프로젝트 → task_lists → tasks → tasks.
이루고 싶은 결과
나의 목표는 각 프로젝트마다 카드 그리드를 보는 것이다.프로젝트 카드의 버튼을 클릭하면 보기를 변경하고 선택한 프로젝트의 작업 목록과 뒤로 버튼을 표시하고자 한다.업무 목록을 클릭하면 보기를 변경하여 선택한 업무 목록의 업무와 뒤로 버튼을 표시하고자 한다.작업을 클릭하면 카드의 상세 뷰와 백버튼을 보여주고 싶다.
코드 샘플
JSON은 매우 크고 가독성이 낮기 때문에 StackOverflow에서는 코드 샘플을 제공하는 것이 어렵다.나는 내 데이터가 어떻게 생겼는지 더 잘 설명하기 위해 코드샌드박스를 준비했다.프로젝트를 파일을 통해 가져오기projects.json
소박하게
지금까지 노력한 것
중첩된 구성요소를 만들었지만 JSON 트리를 위아래로 가로지르지 못했다.그리고 나서 나는 vue 라우터를 통합하려고 했지만, 데이터를 경로에 연결하는 방법을 몰랐다.
질문
이러한 상황에서 최선의 실천 방법은 무엇인가?
먼저 3페이지의 Vue-Router를 생성하십시오. 먼저 프로젝트 목록을 표시하는 홈 페이지와 프로젝트 페이지의 두 번째 페이지, 그리고 세 번째 페이지가 작업 목록 페이지가 됨
const routes = [
{
name: "home",
path: "/",
component: () => import("./pages/Home.vue")
},
{
name: "project",
path: "/project/:projectId",
component: () => import("./pages/Project.vue"),
props: true
},
{
name: "taskLists",
path: "/project/:projectId/tasks",
component: () => import("./pages/TaskLists.vue"),
props: true
}
];
그래서 너의App.vue
포함만 할 것이다<router-view>
, 그리고 당신의 메인 페이지는 로 이동될 것이다.Home.vue
.
그리고 나서 덧붙인다.Project.vue
프로젝트 보기를 클릭할 때 프로젝트 페이지로 푸시할 구성 요소도projectId
매개 변수로서
showProject(id) {
this.$router.push({
name: "project",
params: {
projectId: this.project.id
}
});
}
추가하다Project
을 이해하게 되는 페이지projectId
매개변수로부터, 그리고 JSON으로부터 데이터를 찾아서, 나는 이것을 위해 계산된 속성을 사용했다.
props: ["projectId"],
computed: {
project() {
return projectsData.find(p => p.id === parseInt(this.projectId, 10));
}
},
추가하다TaskLists
프로젝트 페이지와 유사하게 작동하지만 태스크 목록만 표시하는 페이지.
props: ["projectId"],
computed: {
taskLists() {
return projectsData.find(p => p.id === parseInt(this.projectId, 10))
.task_lists.data;
}
},
뒤로 이동 버튼의 경우router-link
, 를 누를 경우Go Back
의 단추를 잠그다Project
페이지, 다시 로 돌아갈 것이다.Home
페이지 :
<router-link :to="{name:'home'}">Go back</router-link>
그리고 만약 당신이 누르면.Go Back
의 단추를 잠그다TaskLists
페이지, 다시 로 돌아갈 것이다.Project
페이지를 넘기다projectId
매개 변수:
<router-link :to="{name:'project', params: {projectId}}">Go back</router-link>
전체 작업 예: https://codesandbox.io/s/how-to-navigate-through-nested-json-forked-fd27x
참조URL: https://stackoverflow.com/questions/63866455/navigate-through-nested-json-data-on-click
'Programing' 카테고리의 다른 글
리액터-루터와 함께 앵커 사용 (0) | 2022.03.13 |
---|---|
vue-roouter에서 각 처리기를 설정하는 방법 (0) | 2022.03.13 |
파이톤 3의 로_input()과 인풋()의 차이점은 무엇일까. (0) | 2022.03.13 |
Typecriptcript를 사용하여 API 호출을 수행하는 React Hook "useEffect"를 테스트하려면 어떻게 해야 하는가? (0) | 2022.03.13 |
Vuetify에 특정 숫자 입력 구성 요소가 있는가? (0) | 2022.03.12 |