json-server
을 설치하고, scripts
에 명령어를 추가하여 개발을 진행했다.netlify
에서 동작하지 않는 문제가 생겼다. // package.json
"scripts": {
...
"server": "npx json-server ./server/data.json --port 4000",
"dev" :"concurrently \"npm run server\" \"npm run start\""
},
// server/data.json
{
"todos": [{
"id": 1,
"content": "타입스크립트 공부하기",
"isCheck": true,
"createdAt":"2012-04-30T02:15:12.356Z",
"color": "red"
},
{
"id": 2,
"content": "Redux-Saga 공부하기",
"isCheck": false,
"createdAt": "2012-04-30T02:15:12.356Z",
"color": "orange"
}
...
]
}
heroku
에서 json-server
부분만 따로 배포하여 진행하였다. > Heroku 참고 링크// utils/constants.js
export const BASE_URL = 'http://paywork-todo.herokuapp.com/';
Redux-Saga 관련해서는 수업에도 들었고, 몇 번 사용해서 개발을 진행해봐서 비동기 처리나 generate문법을 알고 있었다. 그런데 TS 환경에서는 처음 사용해봐서 타입을 지정하는게 꽤나 어려웠다.
transition
VS animation
차이transition
: 요소의 상태가 변해야 애니메이션을 실행한다.animation
: 요소의 모양과 동작을 키프레임 단위로 변경할 수 있다.sagaAsyncTodo
함수를 생성했다.type
, ApiFunc
, action
을 받는다.ApiFunc
를 any
타입에서 적절한 타입으로 수정이 필요하다./* saga 실행 시, api 함수 비동기 호출 함수 */
function* sagaAsyncTodo(type: string, ApiFunc: any, action?: TodosAction) {
const [SUCCESS, FAILURE] = [`${type}_SUCCESS`, `${type}_FAILURE`];
try {
const response: {
msg: string;
result: TodoType[] | number;
content?: string;
} =
action && action.payload
? yield call(ApiFunc, action.payload)
: yield call(ApiFunc);
yield put({ type: SUCCESS, payload: response });
} catch (error) {
yield put({
type: FAILURE,
payload: ERROR_MESSAGE[type],
});
}
}
/* Saga 액션 감지 */
export function* watchTodos() {
yield takeEvery(GET_TODOS, () => sagaAsyncTodo(GET_TODOS, api.getTodoAll));
yield takeEvery(ADD_TODO, (action: TodosAction) =>
sagaAsyncTodo(ADD_TODO, api.addTodoAPI, action),
);
yield takeEvery(TOGGLE_TODO, (action: TodosAction) =>
sagaAsyncTodo(TOGGLE_TODO, api.toggleTodoAPI, action),
);
yield takeEvery(DELETE_TODO, (action: TodosAction) =>
sagaAsyncTodo(DELETE_TODO, api.deleteTodoAPI, action),
);
yield takeEvery(UPDATE_TODO, (action: TodosAction) =>
sagaAsyncTodo(UPDATE_TODO, api.updateTodoAPI, action),
);
}
리액트 실서버 배포시 keyframes가 동작을 안 하는데 이유가 뭘까용?ㅜㅜ 여기저기 뒤져보다가 들렀습니당..