박준혁
04/06/2020, 5:51 AMconst onClickSave = () => {
data.examples.forEach({a, b} => mutation({
variables: {
input: {
a,
b,
}
}
}))
}
위와 같이 mutation을 실행했을 때 race condition에 빠져 cache update가 infinite loop에 빠지는 것 같습니다.
이렇게 추정한 이유는 아래 코드처럼 cache update할 시간을 mutation당 0.1초씩 줬더니 race condition에 빠지지 않고 정상적으로 cache update가 되었기 때문입니다.
const onClickSave = () => {
data.examples.forEach(({a, b}, idx) => setTimeout(() => mutation({
variables: {
input: {
a,
b,
}
}
}), idx * 100))
}
많은 답변 부탁드립니다. (_ _)Tony Won
박준혁
04/06/2020, 5:56 AMTony Won
박준혁
04/06/2020, 5:57 AMTony Won
박준혁
04/06/2020, 5:57 AMTony Won
박준혁
04/06/2020, 5:58 AM박준혁
04/06/2020, 5:58 AMTony Won
Hyeseong Kim
04/06/2020, 6:00 AMTony Won
박준혁
04/06/2020, 6:01 AMTony Won
Hyeseong Kim
04/06/2020, 6:01 AMHyeseong Kim
04/06/2020, 6:01 AMTony Won
박준혁
04/06/2020, 6:02 AMTony Won
Hyeseong Kim
04/06/2020, 6:02 AMTony Won
Hyeseong Kim
04/06/2020, 6:02 AMTony Won
Hyeseong Kim
04/06/2020, 6:03 AMHyeseong Kim
04/06/2020, 6:03 AMTony Won
Tony Won
Hyeseong Kim
04/06/2020, 6:03 AMHyeseong Kim
04/06/2020, 6:03 AMHyeseong Kim
04/06/2020, 6:04 AMHyeseong Kim
04/06/2020, 6:04 AMHyeseong Kim
04/06/2020, 6:04 AMHyeseong Kim
04/06/2020, 6:05 AM박준혁
04/06/2020, 6:05 AMHyeseong Kim
04/06/2020, 6:05 AM박준혁
04/06/2020, 6:06 AMHyeseong Kim
04/06/2020, 6:06 AMHyeseong Kim
04/06/2020, 6:06 AMHyeseong Kim
04/06/2020, 6:06 AMHyeseong Kim
04/06/2020, 6:08 AM박준혁
04/06/2020, 6:09 AMHyeseong Kim
04/06/2020, 6:09 AMHyeseong Kim
04/06/2020, 6:10 AMHyeseong Kim
04/06/2020, 6:10 AMHyeseong Kim
04/06/2020, 6:10 AMHyeseong Kim
04/06/2020, 6:12 AMHyeseong Kim
04/06/2020, 6:12 AMHyeseong Kim
04/06/2020, 6:12 AM박준혁
04/06/2020, 6:13 AM박준혁
04/06/2020, 6:13 AMHyeseong Kim
04/06/2020, 6:25 AM제가 지금 A라는 컴포넌트를 한 화면에서 여러개 보여주고 해당 컴포넌트들의 변화를 onSave때 모두 한번에 mutation해야해서, cache에 저장 후, onSave때 cache에 저장돼있는 값을 불러와서 mutation하는데 이 과정이 잘못된 건가요 ?mutation 이 제각각 호출된다고 했을 때, 이게 별 순서 없이 제각각 업데이트 되는건 사용자 인지적으로 썩 좋은 경험은 아니라서 별도의 트랜지션을 정의하셔야 해요. 그리고 mutation을 기다리는 동안은 사용자 액션도 막아야 할 거구요. 저라면 마찬가지로 일단 변경 사항을 더 상위 컨텍스트에서 모아두겠지만, 뮤테이션은 그 컨텍스트를 제어하는 곳(부모 컴포넌트나 글로벌 스토어, 커스텀 뮤테이션도 해당됨)에서 다루고 트랜지션이 일어나는 동안은 별도의 로딩 UX를 제공하려 할 것 같네요.
박준혁
04/06/2020, 6:29 AMEricHan
04/12/2020, 11:37 AM