書き込みは容易ではない、私はあなたが親指を願って
インポートは、{PureComponent}を反応させから、 「反応します」。
インポート{アニメーション、表示緩和} から 「ネイティブ反応します」。
エクスポートデフォルト クラスNoticeScrollはPureComponent {延び
コンストラクタ(小道具){
スーパー(小道具)。
この .state = {
newChildren:この.props.children、
}。
この .animationは= 新しい Animated.Value(0 );
この .directionは= この === .props.directionを' 垂直'?「高さ」:「幅」;
この .transationValueは= この .props.styles [ この.direction]を、
この .KEY = 0 ;
この .arr = [];
}
startAnimation(){
CONSTメートル= この .props.meter || 0 ;
Animated.timing(この.animation、{
toValueの: - この .transationValue +の計、
持続時間:この .props.scrolltime || 5000 、
緩和:Easing.linear、
useNativeDriver:真、
。})(()開始 => {
この .animationは= 新しい Animated.Value(0 );
この.initPosition();
この.startAnimationは();
});
}
initPosition(){
この .KEY ++ 。
もし(この .KEY < 2 ){
// React.Children.forEach(this.props.children、(子、インデックス)=> {
// ましょう小道具= {
// キー: `$ {this.key} $ {インデックス} `、
// ... child.props
// };
// this.arr.push(React.cloneElement(子、小道具));
// })。
React.Children.forEach(この .props.children、(子、インデックス)=> {
せnewProps = {
キー: `$ { この.KEY} $ {}インデックスflag`、
... child.props、
};
この.arr.push(React.cloneElement(子供、newProps));
});
}
この.setState({
newChildren:[... この.arr]
})。
}
componentDidMount(){
この.initPosition();
この.startAnimation();
}
componentWillUnmount(){
この .startAnimation =()=> {};
}
(){レンダリング
CONST {スタイル、方向} = この.propsと、
CONST {newChildrenは} = この.stateと、
リターン(
<ビュースタイル= {{オーバーフロー:' 隠された'、高さ:35、justifyContent:' 中央' }}>
< Animated.View
スタイル = {{
変換:[
方向!== ' 縦'
?{移動X:この.animation}
:{移動Y:この.animation}
]、
flexDirection:' 行' 、
}} >
{newChildren}
</Animated.View>
</表示>
)。
}
}
コンポーネントはAnimated.divを変更するAnimated.Viewに直接使用することができる反応