React Native 的动画转换无法正常工作

Animation transition with React Native doesn't work properly

我正在玩 React Native,但过渡动画有问题。

Windows 10 - Hyper V,可视化代码模拟器 Android - Ignite Boilerplate。

我想做什么:

当我点击的时候,我想在点击位置显示一个从0到2的缩放动画的圆圈。

我有:

看下图(我设置了setTimout看第一帧)。第一次单击时,组件以其自然宽度和高度第一次快速显示,但 0,001 上的比例没有影响。之后,动画从 0,001 到 2 的比例开始。

随着其他点击,圆开始第一帧与前一个圆的尺寸。然后,动画开始。但是又一次,scale : 0 在第一帧没有效果。

这是午餐屏幕的代码:

export default class LaunchScreen extends Component {
  state = {
    clicks: []
  };
  handlePress(evt) {
    console.log(evt.nativeEvent.locationX, evt.nativeEvent.locationY)
    let xCoord = evt.nativeEvent.locationX;
    let yCoord = evt.nativeEvent.locationY;
    this
      .state
      .clicks
      .push({x: xCoord, y: yCoord});
    this.setState({clicks: this.state.clicks});
  }
  renderClick() {
    if (this.state.clicks.length > 0) {
      return this
        .state
        .clicks
        .map((item, i) =>< ClickAnimation key = {
          item.x
        }
        x = {
          item.x
        }
        y = {
          item.y
        } />)
    } else {
      return <View/>
    }

  }

  render() {
    return (
      <View style={styles.container}>
        <ScrollView
          style={styles.scrollView}
          horizontal={true}
          showsHorizontalScrollIndicator={true}
          contentContainerStyle={styles.scrollView}>
          <TouchableWithoutFeedback
            style={styles.touchableWithoutFeedback}
            onPress=
            {evt => this.handlePress(evt)}>
            <View style={styles.scrollView}>
              {this.renderClick()}
            </View>
          </TouchableWithoutFeedback>
        </ScrollView>
      </View>
    )
  }
}

这里是圆的组成部分:

import React from 'react';
import PropTypes from 'prop-types';
import {Animated, View, Easing} from 'react-native';

export default class ClickAnimation extends React.Component {
    constructor() {
        super();
        console.log(this.state)
        this.state = {
            scaleAnim: new Animated.Value(0.001);
        };  
    }
    componentDidMount() {

        Animated
            .timing(this.state.scaleAnim, {
            toValue: 2,
            duration: 2000
        })
            .start();
       .scaleAnim
    }
    render() {
        return (<Animated.View
            style={{
            zIndex: 10,
            borderColor: "blue",
            borderRadius: 400,
            borderWidth: 1,
            position: "absolute",
            top: this.props.y,
            left: this.props.x,
            width: 60,
            height: 60,
            backgroundColor: "red",
            transform: [
                {
                    scaleY: this.state.scaleAnim
                        ? this.state.scaleAnim
                        : 0
                }, {
                    scaleX: this.state.scaleAnim
                        ? this.state.scaleAnim
                        : 0
                }
            ]
        }}/>);
    }
}

你知道为什么会这样吗?

我找到了解决方案。

这有这个问题:

https://github.com/facebook/react-native/issues/6278

我看到了,这就是我写 0,001 的原因。但是 0,001 还是太少了。使用 0,01 效果很好。

所以答案是:

把0.001换成0.01就可以了,因为太少了