无法添加属性_tracking,对象不可扩展。

10 浏览
0 Comments

无法添加属性_tracking,对象不可扩展。

用例

我有一个卡片列表,想要创建一个左右滑动的tinder风格功能。我已经使用panResponder使滑动工作了,但是在动画化背景颜色时遇到了问题。

设置

constructor() {
  super();
  this.state = {
    bgColor: new Animated.Value(0),
  };
}
onPanResponderMove: (evt, gestureState) => {
  Animated.timing(this.state.bgColor, {
              toValue: 1,
              duration: 100,
            }).start();
}
render() {
    const s = this.state;
    const p = this.props;
    const bgColor = s.bgColor.interpolate({
       inputRange: [0, 1],
       outputRange: [colors.gray.one, colors.primary.light]
    })
    return(
      
        
          { this.props.children }
          
        
      
    )
  }

错误

一旦我开始拖动卡片,就会出现以下错误:

"无法添加属性_tracking,对象不可扩展"

其他说明

如果我用下面的代码替换插值赋值给bgColor,则不会出现错误,但显然会失去颜色动画的效果。

const bgColor = s.bgColor._value === 0 ? colors.gray.one : colors.primary.light;

问题

对于为什么会抛出这个错误以及如何解决它,有什么想法吗?

0