Реанимированный обратный вызов TapGestureHandler с блоком - PullRequest
0 голосов
/ 17 февраля 2020

Каков был бы способ добиться этого.

обратный вызов с Animated.event отлично работает

обратный вызов с блоком не дает обратной связи: (

import React, { useState, useEffect } from "react";
import { View, Text, FlatList, Dimensions, Image } from "react-native";
import Animated from "react-native-reanimated";
import { PanGestureHandler, TapGestureHandler, State } from "react-native-gesture-handler";
const { Value, event, call, set, add, block } = Animated;

const bottom = new Value(100);

//want to achieve something like this 
const onHandlerStateChange = block([set(bottom, add(bottom, 10))]);

// the line below Does work 
// const onHandlerStateChange = event([{ nativeEvent: { y: bottom } }]); 

const Comp = () => {
    return (
        <TapGestureHandler onHandlerStateChange={onHandlerStateChange}>
            <Animated.View style={{ flex: 1}}>
                <Animated.View style={{ flex: 1, position: "absolute", bottom: bottom }}>
                    <Text> some text</Text>
                </Animated.View>
            </Animated.View>
        </TapGestureHandler>
    );
};

export default Comp;

* const onHandlerStateChange = block ([set (bottom, add (bottom, 10))]); * здесь не работает

1 Ответ

0 голосов
/ 13 апреля 2020

Вот решение, которое работает
Совет: Понимание того, как реанимированные оценки узлов будут очень полезны
Вот ссылка на официальный do c, который может помочь вам понять
https://software-mansion.github.io/react-native-reanimated/about-reanimated.html#at -просто-один раз-алгоритм-оценки-

import React, { useState, useEffect } from "react";
import { View, Text, FlatList, Dimensions, Image } from "react-native";
import Animated from "react-native-reanimated";
import {
    PanGestureHandler,
    TapGestureHandler,
    State,
} from "react-native-gesture-handler";
const { Value, event, call, set, add, cond, eq, block } = Animated;

const gstate = new Value(-1);
const onHandlerStateChange = event([{ nativeEvent: { state: gstate } }]);

let bottom = new Value(100);
bottom = cond(eq(gstate, State.END), [set(bottom, add(bottom, 10))], bottom);

const Comp = () => {
    return (
        <TapGestureHandler onHandlerStateChange={onHandlerStateChange}>
            <Animated.View style={{ flex: 1, backgroundColor: "pink" }}>
                <Animated.View
                    style={{ flex: 1, position: "absolute", bottom: bottom }}
                >
                    <Text> some text</Text>
                </Animated.View>
            </Animated.View>
        </TapGestureHandler>
    );
};

export default Comp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...