
Flutter_hooks의 useMemoized() 메소드는 리액트의 그것과 동일하게 복잡한 연산을 가진 메소드의 결과값을 캐싱하여 빠른 출력을 도와준다.
실제로
static List<int> numberList = List.generate(100000220, (index) => Random().nextInt(1123100));
final Function sortMemo = useMemoized(
() {
return () {
final DateTime startTime = DateTime.now();
numberList.sort();
numberList.map((e) => e * e * e).toList();
final DateTime endTime = DateTime.now();
logger.d('sort time: ${endTime.difference(startTime).inMilliseconds}ms');
};
},
[numberList],
);

[useMemoized] will immediately call [valueBuilder] on first call and store its result.
Later, when the [HookWidget] rebuilds, the call to [useMemoized] will return the previously created instance without calling [valueBuilder].
useMemoized 구현부를 보면 위와 같은 주석이 적혀져있다.
useMemoized는 첫번째 호출됐을떄 결과값을 저장해놓은 후 HooksConsumer위젯과 같은 클래스가 다시 빌드됐을때, valueBuilder를 다시 호출하지 않고 이전값을 반환한다고 한다.
This is syntax sugar for [useMemoized], so that instead of:
useCallBackd은 useMemoized에서 key를 전달하는 과정을 생략하여 더 사용하기 쉽게 만든 버젼이라고 이해할 수 있다.