Я пытаюсь выяснить, как сделать eslint счастливым с помощью правила react-hooks/exhaustive-deps
, а также использовать библиотеку Animated
для создания анимации с помощью useEffect.
Следующий код должен выделить кнопка при нажатии, накладывая ее на цветной вид.
const Component = props => {
const [active, setActive] = useState(false);
const [opacity, setOpacity] = useState(new Animated.Value(0));
useEffect(() => {
if (active) {
Animated.timing(opacity, {
toValue: 1,
duration: 200,
useNativeDriver: true
}).start();
} else {
setOpacity(new Animated.Value(0))
}
}, [active, opacity]); // <- Works fine without `opacity`, but eslint wants this
return (
<View>
<Animated.View style={{backgroundColor: "blue", opacity}} />
<TouchableOpacity onPress={()=> setActive(!active)} />
</View>
)
};
Есть ли способ сделать это (с помощью useCallback, useMemo и т. д. c.) без отключения правила?