Я очень новичок в программировании React Native. Я пытаюсь реализовать функцию обновления для обновления в ListView. Итак, я решил использовать RefreshControl Component. Я реализовал состояния переменных и функции в соответствии с документом, но функция _onRefresh() никогда не вызывается. Следовательно, индикатор выполнения также не отображается сверху.
Мой исходный код:
// @flow
'use strict';
import React, {Component} from "react";
import {
StyleSheet,
View,
Image,
Text,
ListView,
TouchableHighlight,
RefreshControl,
} from "react-native";
var BookingRow = require('./bookingRow');
var RequestRow = require('./requestRow');
class Bookings extends Component {
state: {
dataSource: Object;
//refreshing: false,
};
ds: Object;
static propTypes = {
authKey: React.PropTypes.string.isRequired,
endpoints: React.PropTypes.object.isRequired,
profile: React.PropTypes.object,
optionalBookings: React.PropTypes.array,
optionalRequests: React.PropTypes.array,
translator: React.PropTypes.object,
rowSelected: React.PropTypes.func,
};
constructor(props: Object) {
super();
this.ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
var set;
if (typeof props.bookings !== 'undefined') {
set = props.bookings;
} else {
set = props.requests;
}
this.state = {
dataSource: this.ds.cloneWithRows(set),
refreshing: false
};
}
componentWillReceiveProps(props: Object) {
var set;
if (typeof props.bookings !== 'undefined') {
set = props.bookings;
} else {
set = props.requests;
}
this.setState({
dataSource: this.ds.cloneWithRows(set)
});
}
_onRefresh() {
console.log("_onRefresh");
this.setState({refreshing: true});
this.props.fetchBookings().then(() => {
this.setState({refreshing: false});
});
}
render() {
console.log(this.state.refreshing);
return (
<ListView
refreshControl={
<RefreshControl
refreshing={this.state.refreshing}
onRefresh={this._onRefresh.bind(this)}
//onRefresh={() => this.props.fetchBookings()}
/>
}
dataSource = {this.state.dataSource}
enableEmptySections = {true}
renderRow = {(rowData) => {
if (typeof this.props.bookings !== 'undefined') {
return (
<BookingRow
endpoints = {this.props.endpoints}
authKey = {this.props.authKey}
booking = {rowData}
profile = {this.props.profile}
translator = {this.props.translator}
rowPicked = {() => this.props.rowSelected(rowData)}
/>
);
} else {
return (
<RequestRow
profile = {this.props.profile}
endpoints = {this.props.endpoints}
authKey = {this.props.authKey}
request = {rowData}
translator = {this.props.translator}
rowPicked = {() => this.props.rowSelected(rowData)}
/>
);
}
}}
/>
);
}
}
const styles = StyleSheet.create({
});
module.exports = Bookings;
Где я иду не так? Есть ли какая-нибудь опоздательность, которую я пропустил? Что я должен сделать, чтобы убедиться, что жест потяжения обнаружен ListView?
Это лучший инструмент для поиска сторонних библиотек (модулей) для реагирования-native, а также: (Эта ссылка искала pull для обновления модуля для native-native, вы можете искать любой запрос для модулей)
https://js.coach/react-native/react-native-simple-auth?search=pull введите ссылку здесь.
Примечание. Вы можете интегрировать эти модули для обновления функций. Также ознакомьтесь с совместимостью с iOS и Android, а также перед ее внедрением. Когда-то он говорит, что модуль работает как для iOS, так и для Android. Чтобы убедиться в этом, попробуйте запустить пример приложения (доступный в разделе github в папке примера того же репо)
FlatList
вместоListView