-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
А нужен ли put? #24
Comments
в put не нужно устанавливать индикаторы, ошибки или что-то подобное. Он в первую очередь для обратной связи вычисляемой ячейки с ячейками из которых она вычисляется: let firstName = cellx('Вася');
let lastName = cellx('Пупкин');
let fullName = cellx(() => firstName() + ' ' + lastName(), {
put(value) {
value = value.split(' ');
firstName(value[0]);
lastName(value[1]);
}
});
console.log(fullName());
// => "Вася Пупкин"
fullName('Петя Запупкин'); // запись в вычисляемую ячейку
console.log(firstName());
// => "Петя"
console.log(lastName());
// => "Запупкин" |
Ага, т.е. это способ не сохранять все подряд, а только синхронизация, достаточно редкая задача. |
У меня идея какая, для статуса сохранения идеально иметь 3 атома: данные, isPending, error. Я хотел универсальный способ, как при сохранении. но, что б не светить pending и error атомы компоненту. Нужна возможность статус и error хранить в отдельных атомах, управлять ими со-стороны. Но, в случае загрузки нужна возможность "просачивать" их через computable, как сейчас есть isPending, и error (только они создаются и обрабатываются внутри, а не со стороны). Интересно было бы, если б cellx мог так делать. PS: Пожалуй с сохранением плохая идея "просачивать" атомы, т.к. они смешаются с isPending загрузки |
Начнем с того, что при сохранение атома выглядит странно: set(some) вызывает fetch. Для синхронизации это может и годится. Сохранению обычно
Есть форма добавления Todo.
Данные формы и ее ошибки - 2 разных атома.
При сохранении данных надо проверить данные, обновить атом с ошибками, если ошибок нет - выполнить сохранение на сервер. Причем кроме todo, надо сохранить еще кучу данных, не имеющих отношения к нему, ну апи такое. После этого надо еще todos обновить на клиенте.
В примере выше, видно, что todoOnServer - это уже не todo, а некая сущность с с todo, counter, canAddEmpty и на клиенте эта сущность нужна только для показа ошибок от сервера. При чтении у нас вообще отдельная коллекция из другого апи.
Вместо прямого fetch в saveTodo, мы упаковываем todo и canAddEmpty в один объект, сетим с ним атом, а атом уже делает fetch только ради состояния ошибок.
По мне, это и есть основная дырявость абстракции put: не очевидность сохранения, сценарий получается размазанным по saveTodo и put.
С прямым fetch в общем-то простой saveTodo получается, без лишних абстракций.
The text was updated successfully, but these errors were encountered: