[Javascript] 문자열을 객체로 저장

DONNIE·2023년 7월 4일
0

자바스크립트

목록 보기
6/7
  • 문제

    서버에서 파일이름과 파일경로가 담긴 객체를 문자열로 넘겨주는데, 난 각자 필요하니까 객체로 따로 저장

  • 해결방법

    data 배열이 업데이트 될 때 useEffect hook으로 파일 저장, data?.attachment 부분으로 data 가 빈배열이 아니면서 attachment 가 존재할때만 json으로 파싱

const [data, setData] = useState([]);

const getData = () => {

	...API연동...
    if(res.code===200) {
    	setData = res.data.result;
    }
}

const [fileStore, setFileStore] = useState([])

useEffect(()=>{
	if(data?.attachment!=='') {
    	const jsonString = JSON.parse(data.attachment);
        if(jsonString!==null) {
        	setFileStore = [...jsonString]
        }
    }
},[data])
  • 결과

    이제 fileStore.fileName, fileStore.uploadPath 로 저장된 value를 읽어올 수 있다

++ 추가, 데이터 받아올 떄 바로하기

const getCategoyList = () =>{

            var config = {
                method: 'post',
                maxBodyLength: Infinity,
                headers: { 
                   'Authorization': 'Bearer ' + process.env.REACT_APP_TEMP_JWT_LGEKR,
                },
                };
            axiosInstance('/faqCa/list', config)
            .then(function (response){
                let resData = response.data;
                console.log(resData,'dddd')
                if(resData.code===200) {
                    let data = resData.result.map(item => (
                        console.log('===============')
                        ,{
                        ...item,
                        categoryIcon: JSON.parse(item.categoryIcon) // categoryIcon 필드를 파싱하여 JavaScript 객체로 변환
                      }));
                      setIconList(data);
                }else {
                    console.log(resData)
                }
            })
            .catch(function(error) {
                console.log('error',error)
            })
        }
profile
후론트엔드 개발자

0개의 댓글