Mobx наблюдаемые свойства - PullRequest
       14

Mobx наблюдаемые свойства

0 голосов
/ 16 октября 2018

После добавления наблюдаемых свойств в массив с помощью этого действия

@action
improvePrograms = function() {
    let data = this.dataPro;
    this.dataProImproved = data;
    for (i = 0; i < data.length; i++) {
      extendObservable(this.dataProImproved[i], {
        wishedFor: false,
        inCart: false,
        sold: false
      });
    }
  };

Я попытался изменить значения свойств с помощью:

  @action
  addToWishList = function(item) {
    for (i = 0; i < this.dataProImproved.length; i++) {
      if (this.dataProImproved[i].program_id === item.program_id && this.dataProImproved[i].wishedFor === false) {
        this.dataProImproved[i] = { ...this.dataProImproved[i], wishedFor: true };
        console.log("Program added to wish list: ", this.dataProImproved[i]);
        this.getWishList();
      }
    }
  };

все выглядело нормально, но компонент, в котором яиспользование свойства наблюдаемого для изменения цветов не реагирует и не перерисовывается, даже если значение свойств изменено на true.

        <TouchableOpacity onPress={!this.props.program.wishedFor ? this.onSelectWish : this.onDeselectWish}>
          <FontAwesome
            style={{ padding: 7 }}
            name={this.props.program.wishedFor === false ? "heart-o" : "heart"}
            size={28}
            color={!this.props.program.wishedFor ? "#c5d1e8" : "#ff1d25"}
          />
        </TouchableOpacity>

Может кто-нибудь, пожалуйста, объясните мне, что я делаю здесь неправильно.Компонент класса украшен @observer и добавлен в хранилище.

1 Ответ

0 голосов
/ 16 октября 2018

Итак, я заставил его работать, передавая массив данных через:

@computed get getDataProImproved(){return this.dataProImproved}

И не забудьте нарезать массив перед тем, как передать его в FlatList ... Все отлично реагирует ...

...