Такой подход не будет работать. React, вероятно, не будет повторно визуализировать компонент ToggleBlurText
, и стили внутри эффекта не будут применены.
Вместо этого вы можете создать стилизованный компонент и переключить класс css, который изменяет размытие в зависимости от в вашем состоянии.
const Button = styled.button``;
const ToggleBlurText = styled.div`
transition: 5s;
filter: blur(0px);
&.blur {
filter: blur(5px);
}
`;
function App() {
const [blur, setBlur] = useState(false);
return (
<div className="App">
<ToggleBlurText className={blur ? 'blur' : ''}>
<h2>TEXT</h2>
</ToggleBlurText>
<Button onClick={() => setBlur(prev => !prev)}>button</Button>
</div>
);
}
Я также исправил опечатку в вашем стилизованном компоненте css, а также немного изменил обработчик onClick.