Почему вы не хотите создавать новую тему? Если вы обеспокоены накладными расходами на создание своего объекта MyThread, сделайте его Runnable и запустите его с помощью new Thread(myThread).start();
Сначала вы должны получить понимание жизненного цикла React Component .
Вы пытаетесь получить данные из api в componentWillMount
, но данные все еще извлекаются, когда жизненный цикл componentDidMount
встретился там, где вы создаете переменную dataSource. Таким образом, вы не получаете никакого источника данных.
Удалите функцию componentDidMount
и измените функцию отображения так, чтобы всякий раз, когда вы получаете product_categories
, источник данных будет сгенерирован.
render() {
let {loading, error, product_categories} = this.props;
if(error) {
return (
<View style={styles.errorWrapperStyle}>
<Text style={styles.errorTextStyle}>{error}</Text>
</View>
);
}
if(product_categories & !loading){
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.dataSource = ds.cloneWithRows(product_categories);
return (
<ListView
dataSource={ this.dataSource }
renderRow={ this.renderRow }
enableEmptySections={ true }
/>
);
}
return (
<Spinner size="small" />
);
}
Нужно ли вызывать компоненты componentWillReceiveProps после обновления реквизита
componentWillReceiveProps(nextProps){
this.loadPosts(nextProps)**HERE YOU CAN GET UPDATED PROPS**
},
при обновлении данных в это время, вы можете получить доступ к этим данным в nextprops