图像在重新渲染时消失

时间:2020-05-18 20:35:23

标签: image react-native

我有一个功能组件,可显示要上传的图像或视频的预览。我有条件地根据名为media的状态变量进行渲染:

60, 60, 24, 365, 100
ss, mm, hh, jd, c

我将其包装在 const renderMediaInPreview = useCallback(() => { if(media && media.type === "image") { return ( <Image style={{ height: '100%', aspectRatio: 1, resizeMode: 'cover'}} source={{ uri: media.uri }} /> ) } else if(media && media.type === 'video') { return ( <Video style={{ flex: 1 }} source={{ uri: media.uri }} isLooping shouldPlay resizeMode={Video.RESIZE_MODE_COVER} isMuted={true} /> ) } }, [media]) 中,因此仅在useCallback值更改时才调用该函数。但是,使用控制台日志时,我无法看到只要更改了组件的其他状态,该组件就会重新运行,即使media值保持不变,也会使图像消失。有什么见解吗?以下是我的回报和行为摘要。

media

https://drive.google.com/file/d/1-fYSOYTP0W86rRaS_CHqWw_gYfZFBcXT/view?usp=sharing

1 个答案:

答案 0 :(得分:0)

能够找出原因并找出与readonly的问题无关。我已经完成了一些代码重构,function onEdit(event) { ... var offsetRange = event.range.offset(0,31); if(offsetRange.isBlank()){ offsetRange.setValue(new Date()).setNumberFormat("yyyy-MM-dd HH:mm:ss"); } } } 稍有变化,由于重构,我没有注意到,并且不再呈现任何内容,因为如果与上述SELECT ACCOUNT_ID ,EXT_REF_NO ,SERIAL_NUM ,Coalesce(Lag(next_start) Over (PARTITION BY ACCOUNT_ID, EXT_REF_NO ORDER BY next_start NULLS LAST) ,min_start) AS RECORD_START_DT -- If your Teradata version doesn't support LAG/LEAD you must switch to the MAX version -- ,Coalesce(Max(next_start) -- Over (PARTITION BY ACCOUNT_ID, EXT_REF_NO -- ORDER BY next_start NULLS LAST -- ROWS BETWEEN 1 Preceding AND 1 Preceding) -- ,min_start) AS RECORD_START_DT ,RECORD_END_DT FROM ( SELECT ACCOUNT_ID ,EXT_REF_NO ,SERIAL_NUM ,RECORD_START_DT ,RECORD_END_DT -- to check for a gap ,Lag(fixed_start) Over (PARTITION BY ACCOUNT_ID, EXT_REF_NO ORDER BY fixed_start DESC) AS next_start -- ,Max(fixed_start) -- Over (PARTITION BY ACCOUNT_ID, EXT_REF_NO -- ORDER BY fixed_start DESC -- ROWS BETWEEN 1 Preceding AND 1 Preceding) AS next_start -- used in the outer COALESCE to get the min start for the 1st group ,Min(RECORD_START_DT) Over (PARTITION BY ACCOUNT_ID, EXT_REF_NO) AS min_start -- gap detection ,CASE WHEN Cast(RECORD_END_DT AS DATE) + 1 = Cast(next_start AS DATE) THEN 0 ELSE 1 END AS flag FROM ( -- fixing the bad data first SELECT t.* ,CASE WHEN RECORD_START_DT > RECORD_END_DT THEN RECORD_START_DT - INTERVAL '1' DAY ELSE RECORD_START_DT END AS fixed_start FROM tab AS t ) AS fixed_data QUALIFY flag = 1 ) AS dt 检查不匹配。

较小的错误最终导致花费大量不必要的时间……叹了口气。