我正在尝试让一个简单的滚动动画在本机反应中工作,这真是太棒了。
我想要实现的是组件在被点击后滚动到屏幕的右侧边缘。
无论我对这个类做什么,Attempted to assign to readonly property
当我点击元素时都会出现错误,我不知道为什么。
animateOut
我可以看到函数中发生的唯一赋值是this.anim.offsetX
,但这不能是只读属性,因为我在构造函数中清楚地赋值给它就好了。
我尝试过但没有帮助的事情:
从 state 属性中取出可动画的值,因此 animated.timing 调用不会尝试直接改变 state 属性。
简化动画调用,这样只有一个动画会改变这个值。
仔细阅读示例:reactjs 动画文档,看看我在做什么不同。
查找有关堆栈溢出的现有问题。我发现了这个问题,但那里的错误情况似乎不适用于我的代码。
有人可以告诉我我做错了什么吗?
export default class SquareBlock extends Component {
constructor(props) {
super(props);
this.anim = {};
this.anim.offsetX = new Animated.Value(0);
}
animateOut() {
console.log("animating out");
console.log("X offset:",this.anim.offsetX)
Animated.timing(
this.anim.offsetX,
{ toValue: 120,
duration: 500
}
).start();
}
render() {
let content = this.props.content || "Tappable";
let offsetX;
offsetX = this.anim.offsetX;
return (
<Animated.View >
<TouchableNativeFeedback onPress={ () => this.animateOut() }>
<View style={ [styles.outerBox, { "left": offsetX } ] } >
<Text style={ styles.text }> { content }</Text>
</View>
</TouchableNativeFeedback>
</Animated.View>
)
}
}