flatList сохранит прежнюю позицию при добавлении данных - PullRequest
0 голосов
/ 07 января 2019

Я установил инвертированный = true из flatList, поэтому я переворачиваю данные для flatList ,, и я установил getItemLayout для flatList

Каждый раз, когда в обработчик flatList onRefresh я добавляю 12 данных (3 столбца, 4 строки) в данные. Я хочу, чтобы flatList оставался в той же позиции.

Вот что я сделал

 componentDidUpdate() {
    console.log("componentDidUpdate called");

    if (this.state.needScrollFlag) {

        this.state.needScrollFlag = false;

        console.log("scrollToOffset called");

        this.doListScrollToOffset();
    }
}

doListScrollToOffset() {
    let list = this.refs['movieFlatList'];

    let row = this.state.eachTimeLoadCount / this.state.listColumnNum;

    let _offset = row * (this.state.itemWidth + 1);

    list.scrollToOffset({offset: _offset, animated: false});
}

Это не сработало только в первый раз, когда я опускаю

Вот изображение перед опуском

enter image description here

А после опускания, вот так

enter image description here

Так и должно быть

enter image description here

если я снова потяну вниз, это всегда правильно, как и ожидалось

enter image description here

...