
DimenSi
27.08.2018
14:52:03

Efim
27.08.2018
14:54:05
Тут дело может быть не в лене. Если апи открыт то должен быть консистентным, от сюда делать "простое апи для своего сайта" моветон

Dmitry
27.08.2018
14:55:23

Artyom
27.08.2018
14:55:52

Google

DimenSi
27.08.2018
14:56:08

Dmitry
27.08.2018
14:56:12

Artyom
27.08.2018
14:56:15
Почему?

Efim
27.08.2018
14:56:19

Roman
27.08.2018
14:56:44

Dmitry
27.08.2018
14:56:59
какое-то лишнее усложнение

Roman
27.08.2018
14:57:05
Они сюда пришли верстать на кра

DimenSi
27.08.2018
14:57:37
- Ребята, как построить гараж ?
- Купи дом с гаражом!

Artyom
27.08.2018
14:57:48
какое-то лишнее усложнение
Ну, обычно, если апи такое большое и сложное, что встает вопрос в его пересмотре, то прокси gql - это вполне решение

Efim
27.08.2018
14:58:12
Все конечно зависит от проекта, но в 90% случаем преобразование на клиенте допускаются

Artyom
27.08.2018
14:58:14
Но кому-то может быть излишним, конечно, да

Dmitry
27.08.2018
14:58:21

Artyom
27.08.2018
14:58:47

Google

Roman
27.08.2018
14:58:58

Dmitry
27.08.2018
14:59:12

Anton
27.08.2018
15:00:28

Илья
27.08.2018
15:01:17
да ну. Вполне себе может быть оправданно

Roman
27.08.2018
15:02:36
Лучше с реактом запилить

Dmitry
27.08.2018
15:04:25
потому что надо пилить на вью ?)


Max
27.08.2018
15:13:11
Парни часто ли у вас бывает такое что бек кодер, не хочет отдавать вам данные так как это нужно вам. И вместо этого отдает какие то сложные не плосские данные ?
Можно договорится с беком какой формат передачи данных будет удобен обоим но надо не забывать что есть определенные ситуации когда неправильный формат передачи приведет к тормозам.
Очень часто делают так что сервер передает даннные вложенными объектами
{
tasks: [
{
id: 1,
...
subTasks: [
{id: 1, ...},
{id: 2, ...}
]
},
{
id: 2,
...
subTasks: [
{id: 3, ...},
{id: 4, ...}
]
}
]
}Хотя правильно передавать данные в плоском, нормализированном виде
{
tasks: {
1: {id: 1, ..., subTasks: [1, 2]},
2: {id: 2, ..., subTasks: [3, 4]}
...
},
subTasks: {
1: {...},
2: {...},
3: {...}
4: {...}
}
}потому что когда связи между сущностями будут не one-to-many а many-to-many - например нужно передать юзера со списком его друзей и друзей его друзей то попытка передать данные через вложенные объекты приведет к тому что в окажется много дублей юзеров что приведет к мегабайтному json-у, медленной передаче по сети и тормозам как по парсингу так и по обработке.


Dr.
27.08.2018
15:15:46
ребят кто может помочь..
у меня не перерендеривается компонет, точнее мне кадется что у меня socket не отрабатывает
на сервере:
socket.emit('user:join', {
users,
});
на клиенте
componentDidMount() {
socket.on('user:join', this._userJoined);
_userJoined = (data) => {
console.log('user connect', data)
socketStore.temp.users = data.users
}
и собственно рендер юзеров
export class UsersList extends React.Component {
viewchat(users) {
// socketStore.temp.chat = users
// socketStore.tempChatActive = true
// console.log(socketStore.temp.chat)
alert(users.name)
}
render() {
var users = socketStore.temp.users
return (
<div className='users'>
<h3> Online Users </h3>
<ul>
{
Object.keys(users).map((user) => {
return (
<li
key={user}
onClick={this.viewchat.bind(this,users[user])}
>
{users[user].name}
</li>
);
})
}
</ul>
</div>
);
}
}
помогите пожалуста разобарться в чем у меня ошибка


Игорь
27.08.2018
15:15:48
написал тоже самое в вуе сообщество
мама я сейчас застрелюсь
в меня там такие помидоры и ненависть полители
один сказал что он в жизни плоские структуры не делал!

dima
27.08.2018
15:17:08

Игорь
27.08.2018
15:17:16
Я может что то не понимаю но помоему плоская структура всегда гибчи. И если нет каких то серьезных противовесов ее не использовать, то юзать однозначно надо..

Efim
27.08.2018
15:17:37
Ну это одна функция приобразования для клиента
В чем проблема

dima
27.08.2018
15:18:13

Efim
27.08.2018
15:18:16
Сократить кол-во запросов по макимуму/добавить пагинацию

Игорь
27.08.2018
15:19:09

Google

Игорь
27.08.2018
15:19:39

Efim
27.08.2018
15:20:40
На уровне редюсера отбирай
Нет смысла хранить структуры которые все время меняешь

dima
27.08.2018
15:21:08

Efim
27.08.2018
15:21:27

Игорь
27.08.2018
15:21:33

dima
27.08.2018
15:21:44

Игорь
27.08.2018
15:22:18

dima
27.08.2018
15:22:30

Игорь
27.08.2018
15:22:33
или ты хочешь получить не персистентный стейт ?

dima
27.08.2018
15:22:53
какую то дичь втираешь. Я не пойму

Efim
27.08.2018
15:22:59
селектор для этого
Селектор как раз должен постараться вернуть без преобразований) Почитайт за перфоманс

dima
27.08.2018
15:23:20

Efim
27.08.2018
15:23:38
Селектор может преобразовывать, но тогда ты обязан использовать реселект

dima
27.08.2018
15:23:42

Игорь
27.08.2018
15:23:59
какую то дичь втираешь. Я не пойму
Всмысле дичь у тебя есть 2 древовидные структуры которые зависят от некоторых данных. Если ты прокинишь данные и там и там, то данные будут разные, хотя данные одни и теже

Efim
27.08.2018
15:24:02
Ну все зависит от твоей структуры, значит не грамотная, раз на каждый чих)

Google

dima
27.08.2018
15:24:28

Efim
27.08.2018
15:25:24
Уверяю тебя можно сделать грамотную сьтруктуру с редаксом)

dima
27.08.2018
15:25:53

Игорь
27.08.2018
15:26:04
как вы ее сделаете граматной если вы иерархичные данные не выносите в простые типы ?????????

Efim
27.08.2018
15:26:26

dima
27.08.2018
15:26:59

DimenSi
27.08.2018
15:27:26
бля Игорь в реакте этот тот же человек, что другом чате?

Admin
ERROR: S client not available

Efim
27.08.2018
15:27:57

dima
27.08.2018
15:28:47

Kendr
27.08.2018
15:28:48

Игорь
27.08.2018
15:29:08
сорян. Мы друг друга не понимаем. Кто то со стороны подскажет
Бро я хочу понять. есть у тебя допустим книги и в них есть список авторов. Какой смысл хранить автаров в книгах когда можно сделать 2 урла для получения книг и авторов. и на уровне силектора собирать данные. хочешь с авторами, хочешь без авторов


Dr.
27.08.2018
15:31:01
может кто помочь?
ребят кто может помочь..
у меня не перерендеривается компонет, точнее мне кадется что у меня socket не отрабатывает
на сервере:
socket.emit('user:join', {
users,
});
на клиенте
componentDidMount() {
socket.on('user:join', this._userJoined);
_userJoined = (data) => {
console.log('user connect', data)
socketStore.temp.users = data
}
и собственно рендер юзеров
export class UsersList extends React.Component {
viewchat(users) {
// socketStore.temp.chat = users
// socketStore.tempChatActive = true
// console.log(socketStore.temp.chat)
alert(users.name)
}
render() {
var users = socketStore.temp.users
return (
<div className='users'>
<h3> Online Users </h3>
<ul>
{
Object.keys(users).map((user) => {
return (
<li
key={user}
onClick={this.viewchat.bind(this,users[user])}
>
{users[user].name}
</li>
);
})
}
</ul>
</div>
);
}
}

Ilya
27.08.2018
15:33:04
debugger нынче не в фаворе?

Dr.
27.08.2018
15:33:37
не помогает(

Google

DimenSi
27.08.2018
15:33:42

Dr.
27.08.2018
15:33:54
я уперся и не могу отловить где именно ошибка происходит

Игорь
27.08.2018
15:34:21

DimenSi
27.08.2018
15:34:49
У меня есть история игр. У истории игр есть оружия, все приходит вместе, если все приходит вместе, зачем мне это нормализовать?

Ilya
27.08.2018
15:35:03

Dr.
27.08.2018
15:35:26
+

DimenSi
27.08.2018
15:36:04
[ { id, date, weapons: [ { id, name, img } ] } ]
не вижу смысла тут делать нормализацию

Ilya
27.08.2018
15:36:27
+
А там часом не Object[object] получается?

Kendr
27.08.2018
15:36:47

Игорь
27.08.2018
15:36:48

DimenSi
27.08.2018
15:37:16
зачем? Если бекенд мне сразу присылает все нужные данные из базы?

Dr.
27.08.2018
15:37:17

DimenSi
27.08.2018
15:37:24
какой я от этого профит получу?

Dr.
27.08.2018
15:37:55
Object.entries(obj).map([key, val]
забыл уточнитьть что в целом работает.. но допустим когда другой юзер заходит тогда компопонет не перерендеривается..
ваше решение должно помочь?

Kendr
27.08.2018
15:38:07
Ебаш форс апдейт на событие "другой юзер заходит", ахуительные советы от меня

dima
27.08.2018
15:38:41

Dr.
27.08.2018
15:38:42
нет не поможет)

DimenSi
27.08.2018
15:39:36

Ilya
27.08.2018
15:39:43
нет
А до клиента точно данные доходят?

Dr.
27.08.2018
15:39:50
да

Игорь
27.08.2018
15:39:58