当列表状态更新时,react-native flatlist 图像闪烁

chi*_*ro2 2 javascript firebase react-native expo

我已经填充了FlatList从 Googlefirebase后端获取的数据。实现是相当标准的,这是一个精简版:

export default class Day extends Component {

state = { data : [], today: false }


componentWillMount = async () => {

    const { today } = this.state;
    const { calendarDb } = this.props

    await calendarDb.onNewAgenda({ 
          day : today
        , then: this.parseOnListed 
    })
}

parseOnListed = blob => {

    const { data } = this.state;
    data.push(blob)
    this.setState({ data: data })
}


renderItem = ({ item }) => 
    <Hour data = {item}/>


render = () => 
    <FlatList  
        data         = {this.state.data}
        renderItem   = {this.renderItem}
        keyExtractor = {item => item.ID}
    />
Run Code Online (Sandbox Code Playgroud)

}

问题是每次blob推入一个新组件时data,<Image/>组件都会<Hour data={item}/>闪烁。这使得该列表在用户体验方面不可行。是什么赋予了?<Hour/>也是标准的,或多或少是这样的:

const Hour = ({ data }) => 
   <View>
       <Image source={{uri:data.uri}}/>
       <Text> {data.name} </Text>
   </View>
Run Code Online (Sandbox Code Playgroud)

的内容<Text>不闪烁,只有图像来自<Image .../>

小智 6

检查是否keyExtractor正在获取唯一 ID。平面列表在状态更新时重新渲染,并再次下载图像。因为,每一行都没有像@Guruparan Giritharan 在评论中所说的那样唯一标识。