Size: a a a

2020 March 05

NG

N Gafarov in JSNN 🤔 (GSNN)
Каждый раз когда читаю доклад про то, что мы взяли MobX вместо Redux, всегда спрашивают почему не взяли Effector
источник

m

mg901 in JSNN 🤔 (GSNN)
Скорее всего по тому, что пока дока далека от идеала и не допилен real world. Хотя проектов в github уже более 250
источник

m

mg901 in JSNN 🤔 (GSNN)
и на vue и на svelte и на react
источник

NG

N Gafarov in JSNN 🤔 (GSNN)
ну это понятно. имею в виду что маркетинг работает, раз спрашивают
источник

m

mg901 in JSNN 🤔 (GSNN)
N Gafarov
Каждый раз когда читаю доклад про то, что мы взяли MobX вместо Redux, всегда спрашивают почему не взяли Effector
тоже хорошо)) + Если мыслишь в ООП, то mobX попизже будет
источник

NG

Nikita Glazov in JSNN 🤔 (GSNN)
N Gafarov
ну это понятно. имею в виду что маркетинг работает, раз спрашивают
Может быть тебя преследует один человек на докладах?))
источник

MA

Mikhail Angelov in JSNN 🤔 (GSNN)
Олег Хлевнов
Приходи на бир жс)
+100!
источник

m

mg901 in JSNN 🤔 (GSNN)
ок. Когда будет?
источник

MA

Mikhail Angelov in JSNN 🤔 (GSNN)
сегодня в 19
источник

m

mg901 in JSNN 🤔 (GSNN)
Mikhail Angelov
сегодня в 19
где?
источник

MA

Mikhail Angelov in JSNN 🤔 (GSNN)
в нижполиграфе
источник

m

mg901 in JSNN 🤔 (GSNN)
ща буду
источник

E

Evgeniy 🍀 in JSNN 🤔 (GSNN)
N Gafarov
Каждый раз когда читаю доклад про то, что мы взяли MobX вместо Redux, всегда спрашивают почему не взяли Effector
Потому что в MobX любой студент сможет почти любую вундервафлю написать.
А то, что цена поддержки этого говна в итоге будет весьма высока, бизнес не особо волнует (точнее никто не планирует заранее издержки на мэйнтененс, особенно на фронте)
источник

ОХ

Олег Хлевнов in JSNN 🤔 (GSNN)
Приходишь на проект, а там вундервафли на фронте
источник

E

Evgeniy 🍀 in JSNN 🤔 (GSNN)
Олег Хлевнов
Приходишь на проект, а там вундервафли на фронте
да там даже тудулист - уже вундервафля (пример из getting started официального сайта)

class ObservableTodoStore {
@observable todos = [];
   @observable pendingRequests = 0;

   constructor() {
       mobx.autorun(() => console.log(this.report));
   }

@computed get completedTodosCount() {
    return this.todos.filter(
  todo => todo.completed === true
 ).length;
   }

@computed get report() {
 if (this.todos.length === 0)
  return "<none>";
 const nextTodo = this.todos.find(todo => todo.completed === false);
 return `Next todo: "${nextTodo ? nextTodo.task : "<none>"}". ` +
  `Progress: ${this.completedTodosCount}/${this.todos.length}`;
}

addTodo(task) {
 this.todos.push({
  task: task,
  completed: false,
  assignee: null
 });
}
}

const observableTodoStore = new ObservableTodoStore();
источник

NG

N Gafarov in JSNN 🤔 (GSNN)
Если этот говнокод размазать по пяти разным файлам (как в редаксе), то сильно лучше не станет
источник

NG

N Gafarov in JSNN 🤔 (GSNN)
Мы себе пару жестких правил ввели, чтобы с поддержкой не было проблем. Типа enforceActions, не наследовать стор от стора и т.д.
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Evgeniy 🍀
да там даже тудулист - уже вундервафля (пример из getting started официального сайта)

class ObservableTodoStore {
@observable todos = [];
   @observable pendingRequests = 0;

   constructor() {
       mobx.autorun(() => console.log(this.report));
   }

@computed get completedTodosCount() {
    return this.todos.filter(
  todo => todo.completed === true
 ).length;
   }

@computed get report() {
 if (this.todos.length === 0)
  return "<none>";
 const nextTodo = this.todos.find(todo => todo.completed === false);
 return `Next todo: "${nextTodo ? nextTodo.task : "<none>"}". ` +
  `Progress: ${this.completedTodosCount}/${this.todos.length}`;
}

addTodo(task) {
 this.todos.push({
  task: task,
  completed: false,
  assignee: null
 });
}
}

const observableTodoStore = new ObservableTodoStore();
AObservableTodoStore extends IObeservableTodoStore
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
@computed @NotNull List<ITodoItem> get getTodosListFromTodosStore()
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
throws IDataAccessError<ITodoStore>
источник