@adizh

Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed?

Как можно исправить вышестоящий warning, приложение работает нормально, но каждый раз выходит это. Проблема в следующем коде:
class Products {
  products = [];
  constructor() {
    makeAutoObservable(this);
  }
 fetchProducts() {
    let da = [];
    fetch(`https://dummyjson.com/products/`)
      .then((res) => res.json())
      .then((data) => {
        this.products= data.products)
      });

  }

Через runInAction или configure({ enforceActions: 'never' }) тоже не помогло
  • Вопрос задан
  • 1231 просмотр
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
fetchProducts() {
    let da = [];
    fetch(`https://dummyjson.com/products/`)
      .then((res) => res.json())
      .then(action((data) => {
        this.products= data.products;
      }));

  }


либо добавить в класс Products метод setProducts, который благодаря makeAutoObservable станет action

setProducts = (newProducts) => {
    this.products = newProducts;
};
fetchProducts() {
    let da = [];
    fetch(`https://dummyjson.com/products/`)
      .then((res) => res.json())
      .then(this.setProducts);
  }


ну и насчет продуктов: если этот массив у тебя потом нигде не меняется мутабельно (то есть нигде не будет store.products.push(..) и т.п.), то лучше его сделать observable.ref. Впрочем, к вопросу это не относится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы