Я боролся с рендерингом представления списка
class ProductStore {
@observable featureproducts = [];
ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
@computed get dataSource() {
return this.ds.cloneWithRows(this.featureproducts.slice());
}
@action fetchFeatureProducts() {
var url = Config.API_BASE_URL + 'api/v1/product/featureproducts';
return API.getFeatureProdcutService().then((resp) => {
if (resp.status) {
this.setFeatureProduct(resp);
}
}).catch((err) => {
console.log('error',err);
});
}
@action setFeatureProduct(productData) {
this.featureproducts = productData.data.data;
}
}
Теперь для компонента
@Inject( "productStore", "app", "routerActions")
@Observer
class HomePage extends Component {
componentDidMount() {
this.props.productStore.fetchFeatureProducts()
}
render() {
<List
removeClippedSubviews={false}
bounces={false}
directionalLockEnabled={false}
horizontal={true}
showsHorizontalScrollIndicator={false}
dataArray={this.props.productStore.dataSource}
renderRow={item =>
<BannerSlider
imageStyle={styles.bannerSliderImage}
onPress={() => navigation.navigate("ProductList")}
bannerImageText={item.image}
bannerImageSource={item.image}
bannerSmallText={'item.bannerSmallText'}
/>}
/>}
}
Я использую список nativebase, который внутренне использует просмотр списка, не уверен, почему все это не делаетработа
Также я сохранил конструктор (реквизит) {супер (реквизит);
const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
this.state = {
DataSource: ds.cloneWithRows(this.props.productStore.featureproducts.slice())
}