Как я могу использовать аргумент секунд useMemo или useCallback для оптимизации на основе значения внутри обратного вызова?
const [s, setS] = useState({ page: { title: 'a', index: 3 } });
const getPage = data => data.page;
const cb = useCallback(data => setS(data), [getPage(data)]);
// ^ ain't no data here :(
useEffect(() => externalService.sub(cb));
В основном я хочу передать обратный вызов внешней службе, но я хочу, чтобы setSomeState вызывался только в том случае, если data.page был изменен.
Я знаю, что могу обернуть setS другой функцией и сделать shallowEqual перед ее вызовом, но мне было интересно, предоставляют ли useMemo или useCallback что-то подобное.
@YangshunTay, это недействительный код javascript. data в вызове getPage(data) не входит в область действия. Я должен сказать, что это не входит в сферу применения lexical.
Я задавал аналогичный вопрос на реальных примерах. Вы можете проверить это здесь: stackoverflow.com/questions/54963248/…





Не вижу проблемы с кодом. Не могли бы вы придумать воспроизводимую демонстрацию на codeandbox или что-то в этом роде?