Size: a a a

GraphQL — русскоговорящее сообщество

2019 January 04

EM

Eugene Maltsev in GraphQL — русскоговорящее сообщество
componentWillReceiveProps  - депрекейтед
🤔да и default export нынче нежелательно юзать, https://blog.neufund.org/why-we-have-banned-default-exports-and-you-should-do-the-same-d51fdc2cf2ad
источник

EM

Eugene Maltsev in GraphQL — русскоговорящее сообщество
странный гитхаб:(
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
componentWillReceiveProps() уже deprecated? Думал, это с 17-й версии.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Его недолго заменить на getDerivedStateFromProps().
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Пойнт не в этом. Чел выше указал на наличие недостатков и не указал на них самих.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Просто в какой строке случаются.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Eugene Maltsev
на бекенде всегда должна быть валидация:)
ну и на фронте не помешает, да и redux-form говно. Лучше уж formik/final-form
Имелось ввиду, что там на фронте её нет вовсе. Объект передаётся на сервер и валидируется там.
источник

s

sho? in GraphQL — русскоговорящее сообщество
El Anonimo
Был бы признателен за указание в репе, где случаются указанные пункты.
чутьь позже, щас с телефона просто :)
источник

s

sho? in GraphQL — русскоговорящее сообщество
https://github.com/ElAnonimo/DevConnector/blob/master/client/src/components/create-profile/CreateProfile.js#L38
Вот пример пробрасывания пропсов в стейт.
По-хорошему, это должен быть не один компонент, а контейнер без верстки и дочерний stateless component, который только получает пропсы и не имеет стейта.

https://github.com/ElAnonimo/DevConnector/blob/master/client/src/components/create-profile/CreateProfile.js#L120
Вот этого в рендер-методе вообще быть не должно. Зачем там эта мапа? почему ее не вынести в атрибут класса?


https://github.com/ElAnonimo/DevConnector/blob/master/client/src/components/create-profile/CreateProfile.js#L207
https://github.com/ElAnonimo/DevConnector/blob/master/client/src/components/post/CommentItem.js#L28
инстанциирование функций-обработчиков прямо в компоненте тоже антипаттерн.

Ну и так далее.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Понятнее, спасибо.
Надо было вынести компонент в функциональный (presentational) и подать его родителю.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
С мапой тоже просто поленился.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Про последнее, у меня не ту строку открыл браузер.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Вы. наверно, об этом.
button onClick={this.onDeleteClick.bind(this, postId, comment._id)} className="btn btn-danger mr-1">
Вот этот bind().
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Прочитал на Medium, почему. Это было использовано мной, чтоб не делать конструктор.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Более ленивый способ.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
К тому же, это CommentItem. Item, т. е. компонент, получающий пропсы от родителя.
источник

s

sho? in GraphQL — русскоговорящее сообщество
Все это могло быть (и наверное было) расценено как плохой код. Потмоу и оценка джуниор плюс :)
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
Вероятно. Спасибо за комментарии, в любом случае.
источник

EA

El Anonimo in GraphQL — русскоговорящее сообщество
У меня там и дальше есть левоватые хаки.
источник

s

sho? in GraphQL — русскоговорящее сообщество
El Anonimo
Прочитал на Medium, почему. Это было использовано мной, чтоб не делать конструктор.
кроме того, не обязательно делать конструктор, можно использовать arrow functions as class properties
источник