From 3ef961291c02c2a1b0d9293b39f0e5787e1a6740 Mon Sep 17 00:00:00 2001 From: panbibi <1265629139@qq.com> Date: Fri, 17 Feb 2023 15:56:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor(TransitionImage):=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E7=BB=84=E4=BB=B6=E6=9B=BF=E6=8D=A2Class?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/src/TransitionImage/index.tsx | 152 ++++++++++---------- 1 file changed, 75 insertions(+), 77 deletions(-) diff --git a/packages/core/src/TransitionImage/index.tsx b/packages/core/src/TransitionImage/index.tsx index 279d4fa53..d59ca55c8 100644 --- a/packages/core/src/TransitionImage/index.tsx +++ b/packages/core/src/TransitionImage/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import { Animated, Image as ImageNative, @@ -29,27 +29,19 @@ type ImageState = { placeholderOpacity: Animated.Value; }; -export default class TransitionImage extends React.Component, ImageState> { - static displayName = 'Image'; - static getSize = ImageNative.getSize; - static getSizeWithHeaders = ImageNative.getSizeWithHeaders; - static prefetch = ImageNative.prefetch; - static abortPrefetch = ImageNative.abortPrefetch; - static queryCache = ImageNative.queryCache; - static resolveAssetSource = ImageNative.resolveAssetSource; - - state = { +export default function TransitionImage(props: ImageProps & Partial) { + const [state, _] = useState({ placeholderOpacity: new Animated.Value(1), - }; + }); - onLoad = (e: any) => { - const { transition, onLoad, transitionDuration } = this.props; + const onLoad = (e: any) => { + const { transition, onLoad, transitionDuration } = props; if (!transition) { - this.state.placeholderOpacity.setValue(0); + state.placeholderOpacity.setValue(0); return; } - Animated.timing(this.state.placeholderOpacity, { + Animated.timing(state.placeholderOpacity, { toValue: 0, duration: transitionDuration, useNativeDriver: true, @@ -57,74 +49,80 @@ export default class TransitionImage extends React.Component - , - styleProps, - ])} - /> + return ( + + , + styleProps, + ])} + /> - + - - {PlaceholderContent} - - - - - {children} + {PlaceholderContent} - - ); - } + + + + {children} + + + ); } +TransitionImage.displayName = 'Image'; +TransitionImage.getSize = ImageNative.getSize; +TransitionImage.getSizeWithHeaders = ImageNative.getSizeWithHeaders; +TransitionImage.prefetch = ImageNative.prefetch; +TransitionImage.abortPrefetch = ImageNative.abortPrefetch; +TransitionImage.queryCache = ImageNative.queryCache; +TransitionImage.resolveAssetSource = ImageNative.resolveAssetSource; + const styles = StyleSheet.create({ container: { backgroundColor: 'transparent',