React native 在“效果”方法中使用时,“效果”不起作用
我正在尝试使用滚动效果,但效果不是很好 若要向下滚动持续时间,则效果有效 若要向上滚动,将忽略持续时间,它将立即滚动React native 在“效果”方法中使用时,“效果”不起作用,react-native,react-hooks,hook,React Native,React Hooks,Hook,我正在尝试使用滚动效果,但效果不是很好 若要向下滚动持续时间,则效果有效 若要向上滚动,将忽略持续时间,它将立即滚动 <TouchableOpacity onPress={() => setStateMenu(!stateMenu)} activeOpacity={10} > ... </TouchableOpacity> const [stateMenu, setStateMenu] = useState(false);
<TouchableOpacity
onPress={() => setStateMenu(!stateMenu)}
activeOpacity={10}
>
...
</TouchableOpacity>
const [stateMenu, setStateMenu] = useState(false);
const translateY = new Animated.Value(0);
useEffect(() => {
controlMenu();
});
function controlMenu() {
if (!stateMenu) {//fechar Menu
//alert('Fechando');
Animated.timing(translateY, {
toValue: 0,
duration: 400,
useNativeDriver: true,
//delay: 300,
}).start();
}
else {//abrir Menu
//alert('Abrindo');
Animated.timing(translateY, {
toValue: 800,
duration: 400,
useNativeDriver: true,
//delay: 300,
}).start();
}
}
setStateMenu(!stateMenu)}
activeOpacity={10}
>
...
常量[stateMenu,setStateMenu]=useState(false);
const translateY=新的动画值(0);
useffect(()=>{
控制菜单();
});
功能控制菜单(){
如果(!stateMenu){//fechar Menu
//警报(“Fechando”);
动画。计时(translateY{
toValue:0,
持续时间:400,
useNativeDriver:没错,
//延误:300,
}).start();
}
else{//abrir菜单
//警惕(“abindo”);
动画。计时(translateY{
toValue:800,
持续时间:400,
useNativeDriver:没错,
//延误:300,
}).start();
}
}
当stateMenu等于false时,滚动从0px到800px,这与持续时间有关,没错。
现在,当stateMenu为true时,滚动立即转到0px,而不是0.400秒。试试这个
const [stateMenu, setStateMenu] = useState(false);
const translateY = new Animated.Value(0);
useEffect(() => {
controlMenu();
}, [stateMenu]); // listen changes in state menu
function controlMenu() {
if (!stateMenu) {//fechar Menu
//alert('Fechando');
Animated.timing(translateY, {
toValue: 0,
duration: 400,
useNativeDriver: true,
//delay: 300,
}).start();
}
else {//abrir Menu
//alert('Abrindo');
Animated.timing(translateY, {
toValue: 800,
duration: 400,
useNativeDriver: true,
//delay: 300,
}).start();
}
}