@react_js

Страница 4852 из 5115
mihail
20.09.2018
20:37:40
thunk используется для асинхроного кода

чтобы ты смог отложить диспатч

Eduard
20.09.2018
20:38:13
Спасибо большое ещё раз)

mihail
20.09.2018
20:38:19
и уже как колбэк этой функции, которая асинхрона

Google
mihail
20.09.2018
20:38:24
ты и сделаешь dispatch

и диспатч у тебя скорей всего будет то, что зарезолвила асинхроная функция

тоесть .. какой нибудь ajax request

и в этом диспатче ты уже передаешь экшен креатор, который вернет именно объект

и этот объект попадет в reducer и изменит стор

поделай в контексте редакса асинхронные экшен креаторы

и ты поймешь что зачем и почему

setTimeout.. ajax request, setInterval

ещё есть штука как redux-saga

Cenator
20.09.2018
20:40:35
setTimeout.. ajax request, setInterval
Не пиши мелкими сообщениями

Eduard
20.09.2018
20:41:14
ещё есть штука как redux-saga
Я слышал что сага это какой-то паттерн

Тоже для асинхронна

Илья
20.09.2018
20:41:27
А зачем там увеличение веса? У меня и без этого норм работает
У анта селекторы тяжелее. Например в Menu.Item нужно padding переопределить с 16 на 12, обычным & не удается, селектор анта тяжелее

Google
mihail
20.09.2018
20:41:52
Я слышал что сага это какой-то паттерн
сага это отложение return .. типо перед ретурн надо сделать ещё какие-то вычисления - это и есть паттерн сага

Eduard
20.09.2018
20:43:17
?

Спасибо

Vlad
20.09.2018
21:06:42
Можно расширить ShouldComponentUpdate in PureComponent?

Andrey
20.09.2018
21:22:24
Для таких есть Component

Vlad
20.09.2018
21:24:30
@XaveScor просто надо делать проверку все пропсов + с react spring стили на апдейт, что ререндера не было, он каждый раз новый обьект возращает

Artur
21.09.2018
00:53:39
Привет всем. Не мог бы кто-то подсказать в чем ошибка. Программа на redux, redux-thunk и axios обычный todo list когда нажимаю на кнопку удалить, элемент остаеться на на страницу, но если перезагрузить страницу то его нет. Я пробовал на action, отвечающий за удаление, по окончанию прикрутить action, который вначале срабатывает что бы получить все элементы (axios.get) но он у меня работает криво по первому клику не удаляет а потом когда второй раз кликаешь на любой элемент удаляет тот который был кликнут первым. Подскажите где ошибку искать или каким-то советом поделитесь пожалуйста.

Cenator
21.09.2018
00:55:12
у тебя в key индекс элемента массива задан, так нельзя делать

Хотя может ошибаюсь, короче сделай пример на codesandbox

Artur
21.09.2018
00:59:07
Зраствуйте, У меня в key задан id который я получаю по API , консоль не жалуется, id уникален я думал что с этим не связано. А как лучше реалзовать тогда подскажите пожалуйста

Andrew
21.09.2018
01:02:08
вообще ниче не ясно.

Artur
21.09.2018
01:06:56
Простите

вот sandbox , сильно не ругайтесь новичок

https://codesandbox.io/s/j4nxoz594v

Petr
21.09.2018
01:07:40
Тебе нужно внедрить оптимистичный пользовательский интерфейс, если я правильно понял проблему

Artur
21.09.2018
01:15:51
Не совсем понял что вы имеете ввиду

Google
Petr
21.09.2018
01:17:30
так, в чем проблема точно?

по коду я понял что там всё ок, к удаленному туду присвается флаг deleting: true

Artur
21.09.2018
01:19:17
Когда нажимаю кнопку что б удалить элемент, он удаляется только если перезагрузить страницу. А мне надо что б он удалялся со странице по клику без перезагрузки окна.

Petr
21.09.2018
01:22:57
ну вместо присвоения флага deleting: true удаляй этот элемент

а стоп

Artur
21.09.2018
01:24:59
deleting: true у меня для присвоения класса

что б анимацию добавить

Petr
21.09.2018
01:25:27
у тебя не вызывается dispatch(DeleteTodoSuccess(todo))

if (res.status === 204) { поменяй на 200

Artur
21.09.2018
01:29:43
Спасибо Огромное

Petr
21.09.2018
01:30:30
велком!

Vitaliy
21.09.2018
03:47:48
как узнать в каком году в реакте появились refs?

J.
21.09.2018
03:57:53
Тебе нужно внедрить оптимистичный пользовательский интерфейс, если я правильно понял проблему
я вот тоже думаю, как лучше делать эти optimistic updated, на ум два варианта приходят, флаг типа isDeleting у объекта item или отдельный массив с id шниками удаляемых

Nikolay
21.09.2018
04:00:21
Универсальнее уж точно.

Потому что есть еще добавление к примеру.

J.
21.09.2018
04:03:28
Отдельный массив православнее, кажется.
А если зафейлится удаление например, на экране возвращать item в список и показывать какое-то уведомление?

Oleg
21.09.2018
04:13:02
как узнать в каком году в реакте появились refs?
Почти в текущем виде они появились в версии 0.14 в 2015 году https://reactjs.org/blog/2015/10/07/react-v0.14.html. А до этого нужно было вызывать getDOMNode/findDOMNode, с какой версии это было точно не помню, но в 0.9 было точно (начало 2014 года)

Nikolay
21.09.2018
04:22:16
А если зафейлится удаление например, на экране возвращать item в список и показывать какое-то уведомление?
Ну это уж как тебе или вашему дизайнеру угодно, я насчет бест-практик тут не подскажу :( думаю, можно подглядеть, как сделано у кого-нить из авторитетных пацанов типа гугла

В почте у них точно был optimistic update

Google
J.
21.09.2018
04:23:54
Отдельный массив православнее, кажется.
Просто у меня был отдельный массив для удаляемых из которого я брал id если нужно было вернуть item. Но я вот только что понял) что можно ведь, если зафейлилось удаление передавать id в экшене тоже

Admin
ERROR: S client not available

Nikolay
21.09.2018
04:32:56
Короче, я практикую такой подход: есть несколько списков с идшниками, типа там draft, deleting, main и т.д. Отдельной веткой стейта есть коллекция {[id]: Entity}. Редукторы занимаются раскидыванием идшников между этими списками. Кстати, при том же удалении важно обратить внимание, что пока сущность физически не удалена, из main-списка ты ее тоже не удаляешь, а просто скрываешь в рендере. Селектор пишешь для фильтрации, и норм :)

Иначе непонятно при фейле, куда ее вставлять обратно :)

Добавлять в саму сущность какие-то поля -- это черника полнейшая, имхо. В компонент -- да, но это будет вычисляемый селектором пропс :)

J.
21.09.2018
04:39:46
Вообще крайне желательно :)
Ну я это все подобным образом тоже делаю. Только вот реально ли нужен например deleting массив. Можно удалить id bp main id-шников, а в случае фейла удаления вернуть через экшн может

Nikolay
21.09.2018
04:40:06
С добавлением чутка сложнее, там еще и идшники суррогатные придется генерить, а потом обновлять их на реальные.

J.
21.09.2018
04:40:42
Вообще крайне желательно :)
Добавлять в саму сущность и правда не оч, там громоздко выходит

Nikolay
21.09.2018
04:42:16
Ну я это все подобным образом тоже делаю. Только вот реально ли нужен например deleting массив. Можно удалить id bp main id-шников, а в случае фейла удаления вернуть через экшн может
Ну смотри, у тебя 10 айтемов в списке, ты рандомно понатыкал на крестики, пошли запросы на удаление. Половина из них пофейлилась, остальные ок, куда в массиве засунешь сфейлившиеся айтемы?

Nikolay
21.09.2018
04:44:59
J.
21.09.2018
04:45:49
Конечно. Массив и нужен для соблюдения порядка в первую очередь :)
У меня там порядок потом за счет сортировки в селекторе создавался)

Nikolay
21.09.2018
04:46:11
Опять же, где гарантия, что оно всегда так будет? :)

J.
21.09.2018
04:50:01
Ну я описываю общий случай.
в случае с массивом deleted, ты при удалении сразу из основного массива с id не удалешь получается?

Nikolay
21.09.2018
04:50:51
Да, потому что удаления по факту еще не произошло. Основной список должен отражать реальное положение дел :)

Оптимистичный апдейт -- это по сути такая наёбка юзера, когда мы просто скрываем компонент, а юзеру кажется, что у него очень быстрый интернет :)

J.
21.09.2018
04:54:18
Да, потому что удаления по факту еще не произошло. Основной список должен отражать реальное положение дел :)
так и есть) ну при создании вроде еще делают иногда лоадер, на кнопке например

Google
Nikolay
21.09.2018
04:57:14
так и есть) ну при создании вроде еще делают иногда лоадер, на кнопке например
Лоадер можно, чтобы показать юзеру, что добавление еще в процессе. Главное не блокировать ему остальной интерфейс. В мессенджерах, включая телегу, кстати, так сделано.

Nikolay
21.09.2018
05:47:40
А ты использовал что-то типа react-virtualized, для юольших списков?
Нет еще, мы тока недавно начали с легаси-стека на реакт съезжать, задачи такой не возникло пока.

Nikolay
21.09.2018
05:49:18
А пагинация есть у вас там?
А то :) но для юзера выглядит она не как страницы, а как кнопка "показать еще"

J.
21.09.2018
05:54:02
А то :) но для юзера выглядит она не как страницы, а как кнопка "показать еще"
Посмотреть бы на хорошие примеры пагинации, со стороны редакс как ее лучше делать

Nikolay
21.09.2018
05:56:19
Ну у нас пока что вроде никакого рокет-саенса, берем срез данных, подгружаем товары, и всё в таком духе. Рано или поздно стейт конечно распухнет, но возможно уже где-то и выгрузка из памяти тоже есть.

Rauf
21.09.2018
07:06:11
Ребята какая разница между ReactDOM.render() и проста render:function() ???

J.
21.09.2018
07:08:29
Ребята какая разница между ReactDOM.render() и проста render:function() ???
Второй render метод к чему относится ты знаешь?

Rauf
21.09.2018
07:08:39
да

let Block = React.createClass ({ render: function(){ и далее тело функции

Страница 4852 из 5115