React Native - FlatList не вызывает методы жизненного цикла renderItem при обновлении - PullRequest
0 голосов
/ 15 января 2020

Я хочу сделать запрос выборки внутри renderItem componentDidMount метода каждый раз, когда обновляется список, но FlatList вызывает методы жизненного цикла только один раз.

Список

<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 компонента:

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}});
            }
        });
}

Я пытался вызвать fetch внутри render метода, но это тоже не сработало.

Я в основном хочу imageSource обновлять при каждом обновлении списка. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Я не знал, когда ваш список обновился, но вы можете попробовать это this.forceUpdate(), вы можете узнать больше здесь Принудительный компонент для рендеринга

0 голосов
/ 15 января 2020

Из-за этого ListItem не изменилось. Вы должны получить новый значок в onRefresh и передать его в ListItem, тогда все данные будут изменены, когда ListView обновит sh ... если вы хотите сделать это внутри ListItem, вам нужно некоторое взаимодействие с этим параметром. c элемент, например, некоторая кнопка, и если пользователь нажмет ее, выберите и измените значок

...