в том то и дело что состояние провайдера не меняется так много раз:)
короч:
вот такой компонент:
const Comp = () => <Child prop={{foo: 0}} />
когда ОН, сам Comp перерендерится, будет передавать ребёнку каждый раз НОВЫЙ объект. а значит Child будет ререндериться каждый раз, когда ререндерится Comp. не важно, по какой причине и когда
а вот такой:
const Comp = () => {
const prop = useMemo(() => ({ foo: 0}), [])
return <Child prop={prop} />
}
будет каждый раз передавать ОДИН И ТОТ же объект своему Child. и не важно, из-за чего и когда он ререндерится