Получение layout.height после изменения размера ListView

У меня есть ListView, который использует реквизит onLayout для получения начальных свойств макета. Этот ListView также фильтруется, где элементы списка удаляются при добавлении. Как получить новую высоту каждый раз, когда изменяется размер ListView?

onLayoutAction = (event) => {
    var layout = event.nativeEvent.layout
    const {height} = layout
    this.setState({
        currentListHeight : height - 61
    })
}

  renderListView = () => {
    if (this.noRowData()) {
      return (
          <AlertMessage title='No Offerings Available' show={this.noRowData()} />
      )
    } else {
      // TODO: fix refreash control below
      return (
          <ListView
            ref='listView'
            onLayout={this.onLayoutAction}
            scrollEventThrottle={16}
            onScroll={this.onScrollAction}
            contentContainerStyle={styles.listContent}
            dataSource={this.state.dataSource}
            renderRow={this.renderRow}
            renderHeader={this.renderHeader}
            renderFooter={this.renderFooter}
            enableEmptySections
            pageSize={15}
            refreshControl={
              <RefreshControl
                refreshing={this.props.isLoading}
                onRefresh={this.handleOnRefresh}
                tintColor='#000000'
                title='Loading...'
                titleColor='#000000'
                colors={['#000000', '#000000', '#000000']}
                progressBackgroundColor='#ffffff' />
              }
            />
      )
    }
  }

1 ответ

onLayout Функция должна вызываться при монтировании и при каждом изменении макета в соответствии с документацией:

https://facebook.github.io/react-native/docs/view.html

Я сделал быстрый тест и добавил onLayout функция ListView в моем приложении. Он вызывался каждый раз, когда я добавлял элемент в список. Я не тестировал удаление предмета, но предположил бы, что это то же самое.

Вы также можете проверить onContentSizeChange, Он срабатывает каждый раз, когда содержимое изменяется в ScrollView, который использует ListView

https://facebook.github.io/react-native/docs/scrollview.html

Другие вопросы по тегам