首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React Native - FlatList在刷新时不调用renderItem的生命周期方法

React Native - FlatList在刷新时不调用renderItem的生命周期方法
EN

Stack Overflow用户
提问于 2020-01-15 23:14:42
回答 2查看 138关注 0票数 0

我想在每次刷新列表时在renderItemcomponentDidMount方法中发出一个fetch请求,但是FlatList只调用生命周期方法一次。

列表

代码语言:javascript
运行
复制
<FlatList data={this.state.dataSource}
          renderItem={({item}) => <ListItem imageHref={item.imageHref} />}
          keyExtractor={(item, index) => index.toString()}
          refreshing={this.state.refreshing}
          onRefresh={/* Fetching data from JSON and updating dataSource[] */} />

ListItem组件内部:

代码语言:javascript
运行
复制
render() {
    return <Image source={this.state.imageSource} />
}

componentDidMount() {
    fetch(this.props.imageHref)
        .then(response => {
            if(response.status !== 200)
                this.setState({imageSource: require('../assets/default-image.png')
            else
                this.setState({imageSource: {uri: this.props.imageHref}});
            }
        });
}

我尝试在render方法中调用fetch,但也不起作用。

基本上,我希望每次刷新列表时imageSource都会更新。请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2020-01-15 23:33:09

正因为如此,ListItem没有改变。你必须在onRefresh中获取新的图标,并将其传递到ListItem中,然后当ListView刷新时,所有数据都将更改...如果要在ListItem中执行此操作,则需要与特定项进行一些交互,例如,某个按钮,如果用户按下该按钮,则需要获取和更改图标

票数 0
EN

Stack Overflow用户

发布于 2020-01-16 01:13:38

我不知道您的列表何时刷新,但您可以尝试此this.forceUpdate()您可以在此处了解更多信息force component to re render

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59754338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档