Получение 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