Slackbot
03/11/2021, 6:00 AMHyeseong Kim
03/11/2021, 6:02 AMHyeseong Kim
03/11/2021, 6:03 AMHyeseong Kim
03/11/2021, 6:04 AMHyeseong Kim
03/11/2021, 6:04 AMHyeseong Kim
03/11/2021, 6:06 AMconst [mutation] = useMutation(...);
const [state, send] = useMachine(machine, {
services: {
mutation,
},
});
이렇게 주입합니다.undefined
03/11/2021, 6:10 AMservice
주입을 사용하긴 하는데요, useLazyQuery
로 넘겨주려고 하면 타입 에러가 나는데 variables
는 따로 넘겨줘야 하는 걸까요?Hyeseong Kim
03/11/2021, 6:10 AMHyeseong Kim
03/11/2021, 6:10 AMundefined
03/11/2021, 6:11 AMuseMachine
에서 서비스로 레이지 쿼리(매개변수 포함된)를 넘길 때 발생하는데Hyeseong Kim
03/11/2021, 6:11 AMundefined
03/11/2021, 6:12 AMHyeseong Kim
03/11/2021, 6:12 AMHyeseong Kim
03/11/2021, 6:13 AM페이지네이션을 컴포넌트 상태로 가져갈 경우 컴포넌트와 상태로직이 결합하는 문제 때문에 로직을 분리잘 이해를 못했어요 ㅠㅠ
undefined
03/11/2021, 6:14 AMuseState
) 로 관리하게 되면 컴포넌트 내부에 fetchMore
를 하고 페이지네이션 상태를 업데이트하는 코드가 들어가는데 컴포넌트와 로직을 분리하면 좋으니까 이걸 분리하려고 해여 타입에러는 지금 보고 잇습니당undefined
03/11/2021, 6:17 AMconst ExampleComponent = () => {
const loadMore = () => {
...endCursor 와 hasNextPage 를 체 크하고 컴포넌트의 페이지네이션 데이터를 업데이트 하는 로직
} // loadMore 를 분리하고 싶음
}
Hyeseong Kim
03/11/2021, 6:17 AMHyeseong Kim
03/11/2021, 6:18 AMHyeseong Kim
03/11/2021, 6:18 AMHyeseong Kim
03/11/2021, 6:18 AMundefined
03/11/2021, 6:19 AMpageInfo
가 업데이트 되고 그거 기반으로 재쿼리해서 페이지네이션 상태 업데이트 하는 로직입니당Hyeseong Kim
03/11/2021, 6:19 AMHyeseong Kim
03/11/2021, 6:19 AMHyeseong Kim
03/11/2021, 6:19 AMReact.useEffect(() => {
send('PAGE_UPDATED', { pageInfo });
}, [send, pageInfo]);
Hyeseong Kim
03/11/2021, 6:20 AMundefined
03/11/2021, 6:20 AMHyeseong Kim
03/11/2021, 6:21 AMHyeseong Kim
03/11/2021, 6:21 AM무슨 일이 일어났는지 알려주면, 다음에 무엇을 해야하는지 통보해줍니다
Hyeseong Kim
03/11/2021, 6:21 AMHyeseong Kim
03/11/2021, 6:22 AMundefined
03/11/2021, 6:23 AMHyeseong Kim
03/11/2021, 6:23 AMundefined
03/11/2021, 6:23 AMfetchMore
만 서비스로 넘긴다면 처음에 가져오는 데이터는 그냥 useQuery
에 있는 걸 쓰나여 아니면 컨텍스트에 다시 넘겨줘야 하나요? 여기가 뭔가 이상했어여Hyeseong Kim
03/11/2021, 6:24 AMHyeseong Kim
03/11/2021, 6:24 AMHyeseong Kim
03/11/2021, 6:24 AMHyeseong Kim
03/11/2021, 6:24 AMsend('INIT', { initialData })
undefined
03/11/2021, 6:24 AMHyeseong Kim
03/11/2021, 6:25 AMundefined
03/11/2021, 6:25 AMuseQuery
의 결과값에 따라 이걸 다시 이벤트로 머신한테 주는게 뭔가 이상한다고 해야 하나Hyeseong Kim
03/11/2021, 6:25 AMHyeseong Kim
03/11/2021, 6:25 AMHyeseong Kim
03/11/2021, 6:25 AMundefined
03/11/2021, 6:26 AMuseEffect(() => {
if (loading) {
send(LOADING)
}
}, [loading]);
그럼 이런 코드는 valid 한가여?Hyeseong Kim
03/11/2021, 6:26 AMHyeseong Kim
03/11/2021, 6:26 AMHyeseong Kim
03/11/2021, 6:26 AMHyeseong Kim
03/11/2021, 6:26 AMundefined
03/11/2021, 6:26 AMHyeseong Kim
03/11/2021, 6:26 AMHyeseong Kim
03/11/2021, 6:26 AMHyeseong Kim
03/11/2021, 6:27 AMHyeseong Kim
03/11/2021, 6:27 AMHyeseong Kim
03/11/2021, 6:28 AMHyeseong Kim
03/11/2021, 6:28 AMHyeseong Kim
03/11/2021, 6:28 AMHyeseong Kim
03/11/2021, 6:28 AMHyeseong Kim
03/11/2021, 6:28 AMHyeseong Kim
03/11/2021, 6:28 AMundefined
03/11/2021, 6:29 AMfetchMore
는 service
로 사용된다음 해당 서비스가 invoke 되면서 알아서 상태 전환
여기서 컴포넌트는 머신에 대해 알 필요 없고 이벤트만 쏴주면 됨 (컴포넌트-로직 분리의 핵심)
이렇게 되는데 맞게 이해한 걸까여?undefined
03/11/2021, 6:29 AMHyeseong Kim
03/11/2021, 6:29 AM로딩/성공/실패에 따라여전히 디테일이네요
Hyeseong Kim
03/11/2021, 6:30 AMHyeseong Kim
03/11/2021, 6:30 AMundefined
03/11/2021, 6:30 AMfetchPolicy: no-cache
입니다Hyeseong Kim
03/11/2021, 6:30 AMundefined
03/11/2021, 6:30 AMHyeseong Kim
03/11/2021, 6:30 AMHyeseong Kim
03/11/2021, 6:31 AMundefined
03/11/2021, 6:31 AMundefined
03/11/2021, 6:31 AMHyeseong Kim
03/11/2021, 6:32 AMHyeseong Kim
03/11/2021, 6:32 AMundefined
03/11/2021, 6:32 AMHyeseong Kim
03/11/2021, 6:32 AMHyeseong Kim
03/11/2021, 6:32 AMundefined
03/11/2021, 6:32 AMundefined
03/11/2021, 6:33 AMHyeseong Kim
03/11/2021, 6:33 AMReact.useEffect(() => send('LOADING_CHANGE', loading), [loading]);React.useEffect(() => send('DATA_CHANGE', data), [data]);React.useEffect(() => send('ERROR_CHANGE', error), [error]);
이것만 있어도 머신에 주어진 맥락은 충분하고undefined
03/11/2021, 6:34 AMHyeseong Kim
03/11/2021, 6:34 AMReact.useEffect(() => send('RECIVED_RESULT', result), [result]);
만 있어도 됨undefined
03/11/2021, 6:34 AMHyeseong Kim
03/11/2021, 6:34 AMHyeseong Kim
03/11/2021, 6:34 AMHyeseong Kim
03/11/2021, 6:34 AMundefined
03/11/2021, 6:35 AMHyeseong Kim
03/11/2021, 6:35 AMHyeseong Kim
03/11/2021, 6:35 AMHyeseong Kim
03/11/2021, 6:35 AMundefined
03/11/2021, 6:36 AMHyeseong Kim
03/11/2021, 6:36 AMHyeseong Kim
03/11/2021, 6:36 AMundefined
03/11/2021, 6:36 AMHyeseong Kim
03/11/2021, 6:37 AMundefined
03/11/2021, 6:37 AMHyeseong Kim
03/11/2021, 6:37 AMundefined
03/11/2021, 6:38 AMHyeseong Kim
03/11/2021, 6:38 AMHyeseong Kim
03/11/2021, 6:38 AMHyeseong Kim
03/11/2021, 6:39 AMHyeseong Kim
03/11/2021, 6:39 AMHyeseong Kim
03/11/2021, 6:39 AMundefined
03/11/2021, 6:40 AMHyeseong Kim
03/11/2021, 6:41 AMundefined
03/11/2021, 6:41 AM