내려온 데이터들을 지속적으로 store에 저장. (while문을 사용하여단어로 끊어져서 내려오는 데이터들을useRetrieveStore에set)
React.js4번화면에서 사용 하도록 한다
2. utils.js - 데이터 전처리
데이터의 포맷이 정상적으로 내려오지 않아서 1.5일 동안 개고생했다.
이 부분인데,
removeLeadingData(String): 데이터의 가장 앞에"data: "로 내려오는 경우가 있어 해당 로직을 추가하였다. (",data:"도 있었다..)
decodeUnicodeString(String):Unicode로 된 데이터를 변환하는 작업.
removeFirstAndLastQuotes(String): Escape 문자열을 처리하는 방법.(진짜 할 때 속터져)
str
.replace(/"{/g, '{') // 문자열 시작의 '"{' 를 '{' 로 변경 (JSON 객체 시작 부분 정리)
.replace(/}"/g, '}') // 문자열 끝의 '}"' 를 '}' 로 변경 (JSON 객체 끝 부분 정리)
.replace(/\\/g, '\\\\') // 단일 백슬래시를 이중 백슬래시로 변경 (이스케이프 처리)
.replace(/"/g, '\\"') // 따옴표를 이스케이프 처리된 따옴표로 변경
.replace(/\t/g, '\\t') // 탭 문자를 이스케이프 처리된 탭으로 변경
4. parseNestedJSON(String|Object): 결국 받아온 값들을 사용하려면JSON.parse(String)이 필요한데, 재귀함수처럼 사용하였다 (사실은 while 반복문) 한 번 파싱했을 때 한개의 요소만 JSON 파싱이 되는 경우가 있어서 만약 String 형태면 다시JSON.parse()해주는 작업을 추가하였다.
기존 영상(RemixTutorial 영상)을 참고하여 리스트를 출력해보았습니다. (대신 하나 추가해서 따라해봤어요.)
data내용 간단요약
Remix 에서 데이터를 컴포넌트에 불러오는 방식을 위와같이 합니다.
저 loader 함수는 클라이언트가 볼 수 없는 함수가 됩니다. ==> remix의 장점
1) useLoaderData 라는 remix 훅을 import 합니다. 2) loader 라는 이름의 함수를 생성하여 그 내부에서 데이터를 불러옵니다. (async await 부분) 3) LoaderData 라는 형식을 선언해줍니다. (type LoaderData) 4) loader 함수 내에서 LoaderData 타입으로 데이터를 반환한다고 말합니다. (--- json 이라는 라이브러리를 import 합니다.) 5) 데이터를 호출할 때 useLoaderData 함수를 LoaderData 형식으로 선언한다고 합니다.
엄청 왔다갔다 했네요. 이제 다 왔습니다. 데이터만 뿌려주면 되네요.
map 이용하여 데이터를 loop 돌리도록 하겠습니다.
사이드 프로젝트를 하게되어 remix, react.js, typescript를 하게되었는데... 뭔소린지 하나도 모르겠어서 열심히 공부중입니다.....
<template>
// 각각의 id를 가진 리스트를 v-for로 출력.
<div class="movie" v-for="movie in movies" :key="movie.imdbID">
<router-link :to="'/movie/' + movie.imdbID" />
// router-link를 통해 반복문을 통해 출력된 movie 객체의 id값을 전달하고자 한다.
</template>
- posts/store에 url을 타고 들어가면 데이터가 생성되도록 컨트롤러를 설정하도록 하겠습니다.
class PostController extends Controller
{
// store post
public function store () {
$post = new Post;
$post->title = "a new title";
$post->body = "a new body";
$post->slug = Str::slug($post->title);
$post->user_id = 1;
$post->save();
}
}