Вы были правы, так как в первый раз компонент визуализирует contentRef.current со значением NULL, поэтому будет выдано сообщение об ошибке.
Нам нужны две вещи: ссылка на целевой элемент и способ повторного рендеринга, чтобы наш scrollTrigger вычислялся снова. другими словами, нам нужно государство.
Следующий код будет работать
export default props => {
// please keep it undefined here to not make useScrollTrigger throw an error on first render
const [scrollTarget, setScrollTarget] = useState(undefined)
const scrollTrigger = useScrollTrigger({ target: scrollTarget });
return (
<React.Fragment>
<CustomHeader shrink={scrollTrigger} />
<div ref={node => {
if (node) {
setScrollTarget(node);
}
}}>
{props.children}
</div>
</React.Fragment>
);
};