3 回答

TA貢獻1812條經驗 獲得超5個贊
如果你的組件是一個你不應該使用的函數this.state.
,但你必須直接調用狀態名稱。
在您的代碼中:
var bgColor = color.interpolate({...})
代替:
var bgColor = this.state.color.interpolate({...})
從反應文檔
閱讀狀態
當我們想在一個類中顯示當前計數時,我們讀取 this.state.count:
<p>You clicked {this.state.count} times</p>
在函數中,我們可以直接使用count:
<p>You clicked {count} times</p>

TA貢獻1825條經驗 獲得超4個贊
這是一個示例,不要為動畫值創建狀態,而是使用備忘錄對其進行一次初始化并使用計時功能對其進行更新
小吃:https ://snack.expo.io/GwJtJUJA0
代碼:
export default function App() {
const { value } = React.useMemo(
() => ({
value: new Animated.Value(0),
}),
[]
);
React.useEffect(() => {
Animated.loop(
Animated.sequence([
Animated.timing(value, {
toValue: 1,
duration: 1000,
}),
Animated.timing(value, {
toValue: 0,
duration: 1000,
})
])
).start();
}, []);
const backgroundColor = value.interpolate({
inputRange: [0, 1],
outputRange: ['#0dff4d', '#ff390d'],
});
return (
<View style={styles.container}>
<Animated.View style={{ width: 200, height: 100, backgroundColor }} />
</View>
);
}

TA貢獻2051條經驗 獲得超10個贊
在功能組件中,您不使用 訪問組件的狀態屬性/變量this.state.abc,而是直接使用狀態變量的名稱。所以你應該做的是:
var bgColor = color.interpolate({
inputRange: [0, 300],
outputRange: ['rgba(255, 0, 0, 1)', 'rgba(0, 255, 0, 1)']
});
添加回答
舉報