diff --git a/apis/AccessRequestApi.js b/apis/AccessRequestApi.js index f470a6c..0c6f64e 100644 --- a/apis/AccessRequestApi.js +++ b/apis/AccessRequestApi.js @@ -1,5 +1,12 @@ import axios from './AxiosInstance'; +// 병원 목록 조회 +export const getHospitalList = async () => { + const response = await axios.get('/hospitals'); + + return response.data.data; +}; + // 환자 번호 검증 export const verifyPatientCode = async (patientCode) => { const response = await axios.post( diff --git a/components/lists/NormalList.js b/components/lists/NormalList.js index 160eca6..5ab7f42 100644 --- a/components/lists/NormalList.js +++ b/components/lists/NormalList.js @@ -8,7 +8,8 @@ const NormalList = ({ nextPage, onItemPress, renderItem, - style, + navigationParams, // 다음 페이지에 넘길 정보 + style, // 각 항목 style }) => { // 선택 항목의 index 저장 const [selectedIndex, setSelectedIndex] = useState(null); @@ -24,7 +25,8 @@ const NormalList = ({ // nextPage prop이 있으면 해당 페이지로 이동 if (nextPage) { // name: 병원명 혹은 메뉴명 - navigation.navigate(nextPage, { name: items[index] }); + const params = navigationParams ? navigationParams(items[index]) : { name: items[index] }; + navigation.navigate(nextPage, params); } }; @@ -34,14 +36,12 @@ const NormalList = ({ handleSelect(index)} - style={[styles.itemBox, selectedIndex === index && styles.selectedItemBox, style]} + style={[styles.itemBox, style]} > {renderItem ? ( renderItem(item, index, selectedIndex === index) ) : ( - - {item} - + {item} )} ))} diff --git a/pages/AccessRequestPage.js b/pages/AccessRequestPage.js index 5d07cba..d584740 100644 --- a/pages/AccessRequestPage.js +++ b/pages/AccessRequestPage.js @@ -1,15 +1,34 @@ import { View, Text } from 'react-native'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { styles } from './styles/AccessRequestPage.styles'; -import { hospitalName } from '../mocks/hospitalData'; import NormalInput from '../components/textinputs/NormalInput'; import NormalList from '../components/lists/NormalList'; +import { getHospitalList } from '../apis/AccessRequestApi'; const AccessRequestPage = () => { const [searchText, setSearchText] = useState(''); + const [hospitalName, setHospitalName] = useState([]); + + // 병원 목록 불러오기 + useEffect(() => { + const getHospitalsName = async () => { + try { + const data = await getHospitalList(); + console.log(data); + + setHospitalName(data); + } catch (error) { + console.error('병원 목록 불러오기 실패:', error); + } + }; + + getHospitalsName(); + }, []); // 검색 결과 필터링 - const filteredHospitals = hospitalName.filter((name) => name.includes(searchText)); + const filteredHospitals = hospitalName.filter((hospital) => + hospital.hospitalName.includes(searchText), + ); return ( @@ -20,7 +39,17 @@ const AccessRequestPage = () => { onChangeTextHandler={setSearchText} /> {filteredHospitals.length > 0 ? ( - + ( + {item.hospitalName} + )} + navigationParams={(item) => ({ + hospitalId: item.hospitalId, + hospitalName: item.hospitalName, + })} + /> ) : ( 검색 결과가 존재하지 않습니다. )} diff --git a/pages/AccessRequestRolePage.js b/pages/AccessRequestRolePage.js index 96aeece..f4c3936 100644 --- a/pages/AccessRequestRolePage.js +++ b/pages/AccessRequestRolePage.js @@ -10,7 +10,7 @@ import GuardianVerificationForm from '../components/accessRequest/GuardianVerifi import { useNavigation } from '@react-navigation/native'; const AccessRequestRolePage = ({ route }) => { - const { name } = route.params; + const { hospitalName } = route.params; const [role, setRole] = useState('patient'); const [isVerified, setIsVerified] = useState(false); // 검증 여부 @@ -82,7 +82,7 @@ const AccessRequestRolePage = ({ route }) => { extraScrollHeight={40} // 키보드와 입력창 사이 간격 enableOnAndroid={true} // 안드로이드 자동 스크롤 설정 > - {name} + {hospitalName}