Родная база рендеринга проблема с MOBX - PullRequest
0 голосов
/ 29 сентября 2018

Я боролся с рендерингом представления списка

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())
}
...