Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   React'а тред (https://javascript.ru/forum/offtopic/53890-react%27-tred.html)

Erolast 28.06.2015 07:58

Цитата:

Вот не пойму почему именно componentDidMount, а не componentWillMount?
В смысле, почему нельзя дождаться загрузки данных перед встраиванием компонента? Потому что асинхронны данные, а не компонент. Иными словами: если я приказал компоненту отрендериться, то я ожидаю, что он сразу появится в DOM, и меня абсолютно не волнует, подгружается ли откуда-то его содержимое или нет.
Сравни с элементом img: когда ты добавляешь его в DOM, то он оказывается там сразу, а картинка появляется уже потом, когда будет сделан запрос к серверу; до тех пор же, например, можно показать какой-нибудь прелоадер.

Safort 28.06.2015 13:10

cyber,
Цитата:

На сколько я понял он о MVC
С реактом обычно используют flux или что-то похожее.

Цитата:

Я прав?)
Думаю, нет. А вообще - хз, лучше пусть сам Гозар объяснит что имел ввиду)

P.S. тоже слаб в паттернах

Safort 28.06.2015 13:10

Erolast,
Цитата:

async/await лучше в getSomeData применить
Попробовал, выглядит значительно лучше. Спасибо)

Safort 28.06.2015 13:46

Цитата:

Сообщение от Erolast (Сообщение 376907)
В смысле, почему нельзя дождаться загрузки данных перед встраиванием компонента? Потому что асинхронны данные, а не компонент. Иными словами: если я приказал компоненту отрендериться, то я ожидаю, что он сразу появится в DOM, и меня абсолютно не волнует, подгружается ли откуда-то его содержимое или нет.
Сравни с элементом img: когда ты добавляешь его в DOM, то он оказывается там сразу, а картинка появляется уже потом, когда будет сделан запрос к серверу; до тех пор же, например, можно показать какой-нибудь прелоадер.

Ок, понял.

Gozar 28.06.2015 13:53

Цитата:

Сообщение от Safort
С реактом обычно используют flux

React без flux использовать смысла нет.

Без flux он становится громоздким и переусложненным шаблонизатором. Гораздо лучше тогда использовать Snakeskin и написать свою архитектуру без висящих в тени методов на 150 кб.

Если думать о React как о node с его loop циклами то то, что ты пытался сделать в начале с await будет вешать петлю и поломает всю "сильную" идею реакта. Хотя в последнее время я React начинаю немного не долюбливать из-за сложности управления всем этим добром. Пока идея потока не войдет в голову прочно, можно много косяков наделать :) А без потока React "громоздкий шаблонизатор" основанный на компонентах.

cyber 28.06.2015 13:55

Цитата:

Сообщение от Gozar
React без flux использовать смысла нет

Что такое flux? Для тех кто в танке?

Safort 28.06.2015 14:01

cyber,
от жеж лентяй)
http://habrahabr.ru/post/246959/
http://tftf.ru/stati/javascript/reac...90/obzor_flux/

Safort 28.06.2015 14:03

Gozar,
Цитата:

Хотя в последнее время я React начинаю немного не долюбливать из-за сложности управления всем этим добром.
Да, тоже бывают такие мысли.

Цитата:

что ты пытался сделать в начале с await будет вешать петлю и поломает всю "сильную" идею реакта.
Я ж говорю, я просто экспериментирую)

cyber 28.06.2015 14:14

Safort, спасибо)

Lemme 07.09.2015 14:40

Кто то использовал Refluxjs? У меня вопрос, там с es6(классами) совсем беда?

FINoM 01.11.2015 00:22

Сколько ни смотрю на Реакт, одного не могу понять: почему этот виртуальный ДОМ так нахваливают. Не холивара ради, просто, правда, не понимаю. Получается, что они перед изменением вьюхи сверяют её с виртуальным представлением и меняют только то, что обновилось. Но чем это лучше dirty-check?

Zaveshanie 01.11.2015 00:51

Цитата:

Сообщение от FINoM
чем это лучше dirty-check?

Может и ничем. В React есть хитрый механизм(добавление ключей) оптимизирующий проверки вирт. DOM, сильно влияющий на скорость. Если в твоём dirty-check есть такие же оптимизации, то он может работать быстрее React. ;)

Скажу по секрету на React можно писать так, что он будет тормозить.

FINoM 01.11.2015 01:14

Zaveshanie, ну я не сравниваю dirty-check с виртуальным домом, я, скорее, хочу понять, чем он лучше отвутствия всяких проверок.

Mаxmaxmаximus 01.11.2015 04:32

FINoM, лол вы ребят путаете рендеринг и датабиндинг)

у меня в юишке для второй альфы испльзуется виртуал дом для рендеринга асссинхронного, а так же используется датабиндинг этого виртуал дом с данными, построенный на обсерверах, а где они не тянут то дирти чекинг.


вот какую архитектуру щас делаю


FINoM 01.11.2015 14:52

Mаxmaxmаximus, а по теме можешь что-то сказать?

cyber 10.10.2016 10:30

разбираюсь с рекатом, сейчас читаю эту статью https://habrahabr.ru/company/mailru/blog/303456/ , не могу понять откуда взялось свойство props https://github.com/teropa/redux-voti...nents/Vote.jsx ??

Lemme 10.10.2016 12:25

что такое props
https://facebook.github.io/react/doc...ing-props.html

Откуда в компоненте Vote props
https://github.com/teropa/redux-voti...Voting.jsx#L14

cyber 24.10.2016 00:09

Потихоньку все становится на свои места, сейчас читал доку redux, и все было нормально пока не дошел до ассинхроных событий, и там уже начинается что то похожее на костыли.
Цитата:

Without middleware, Redux store only supports synchronous data flow. This is what you get by default with createStore().
В принципе возникает вопрос, на что кроме redux есть смысел посмотреть, потому что вариантов много..

Lemme 24.10.2016 00:33

Цитата:

все было нормально пока не дошел до ассинхроных событий, и там уже начинается что то похожее на костыли.
cyber, жесть, т.е middleware пугают??

Это с redux-thunk, в большей степени этого middleware хватает для асинхронщины, да и выглядит он банально. https://github.com/gaearon/redux-thu...r/src/index.js

вся суть redux-thunk (без redux)
const dispatch = action => {
  // а это и есть вся суть redux thunk
  if (typeof action === 'function') {
    return action(dispatch) 
  }
  
  // это вместо next(action)
  console.log(action)
}

const syncAction = message => message

const asyncAction = message => dispatch => {
  setTimeout(() => {
  	dispatch(syncAction(message))
  }, 1000)
}

dispatch(syncAction('foo'))
dispatch(asyncAction('bar'))


а вот пример (из доки)
https://github.com/gaearon/redux-thunk#motivation

Цитата:

на что кроме redux есть смысел посмотреть
сейчас вроде как становится популярный mobx

cyber 24.10.2016 11:26

Lemme, меня больше смущает что то такое
store.dispatch(fetchPosts('reactjs')).then(() =>
  console.log(store.getState())
)

Lemme 24.10.2016 11:57

cyber, это api redux'a, если использовать redux с react'ом, то такого не будет.

import { connect } from 'react-redux'
import fetchPosts from 'path/to/actions'

@connect(({ posts }) => posts) // map state to props
export default class Posts extends React.Component {
  componentDidMount() {
    this.props.dispatch(fetchPosts('reactjs'))
  }
  
  render = () => (
    <ul>
      {this.props.posts.map(post => <li>{post.title}</li>)}
    </ul>
  )
}

cyber 24.10.2016 12:35

Lemme, я так понимаю ты сам используюешь react + redux, с какими проблемами в архитектуре ты чаще всего сталкуешся ?
Для чего например могут понадобится костыли?

Lemme 24.10.2016 14:16

cyber, давно были траблы с сокетами, т.е было непонятно, как хранить соединение, как это соединение расшарить между компонентами и подключаться при необходимости, как вызывать события и.т.д. Но сейчас, загуглив redux-socket, решений больше, чем нужно. Поэтому, основная проблема Redux'a - бойлерплейт, но и это решается с помощью того же redux-saga, но я не использовал.

Но, как говорят, сейчас врывается mobx, а redux постепенно отъезжает, но я его не пробовал, только мельком доку смотрел.

cyber 24.10.2016 14:24

Цитата:

Сообщение от Lemme
Но, как говорят, сейчас врывается mobx, а redux постепенно отъезжает, но я его не пробовал, только мельком доку смотрел.

Как все запутанно)

Lemme 24.10.2016 14:27

cyber, это то, что я где-то читал, а мб mobx начали пиарить, кто его знает. Да и, если нужно что-то будет писать на реакте, буду использовать redux.

А в остальных случаях, лучше Vue :)

cyber 24.10.2016 14:29

Цитата:

Сообщение от Lemme
А в остальных случаях, лучше Vue

Мне сначало, нужно разобратся что к чему)
Что из себя представляет react + flux, react + redux, angular 2, а потом уже и можно на vue смотреть, а то я так сказать отстал от жизни)

cyber 25.10.2016 16:07

В некоторых статьях видел писали что flux похож на MVC. Я может чего то еще не понимаю но это мне кажется бредом?

Makarov 25.10.2016 16:15

cyber,
в таких статьях надо очень внимательно выяснять у автора что он понимает под mvc (и что под flux раз уж такое дело).

Makarov 26.10.2016 14:12

cyber,
https://twitter.com/agento/status/790856622860013568

cyber 26.10.2016 15:41

Makarov, ты о том что люди по разному понимают MVC?

Makarov 26.10.2016 16:15

cyber,
да, причем потрясающе по-разному. Как это видит фейсбук показано в их презентации, которую Вы уже наверняка смотрели впрчоем: https://facebook.github.io/flux/

cyber 26.10.2016 16:39

Makarov, да смотрел, у каждого свой MVC ))

cyber 03.11.2016 15:06

написал первое приложение в связке react + redux, если кому то не влом то сделайте code review https://bitbucket.org/CyBer_UA/react...simple-app/src )
P.s про immutable.js знаю, буду использовать в след проектах

Makarov 03.11.2016 17:07

cyber,
Так в пару случайных мест тыкнул (по сорцам, не собирал даже):
1. в babelrc одни пресеты, в package.json в зависимостях другие, в секции babel - третьи. Не запутаешься?)
2. <b>owner: </b> <img src={`${item.owner.avatar_url}.jpg`} width="50px" height="50px"/> Инлайнить размеры - айяйяй. css loader настраивать влом было?)
3. Я крайне рекомендую прописывать propTypes где это возможно

Ну и шутка в тему:
https://twitter.com/thomasfuchs/stat...75139253174273

Лол, еще шапку не везде убрал: (удалена шапка чтобы кто-то не получил по шапке))

cyber 03.11.2016 17:23

Цитата:

Сообщение от Makarov
1. в babelrc одни пресеты, в package.json в зависимостях другие, в секции babel - третьи. Не запутаешься?)

это тестовый модуль, я скопировал откуда то, лень было руками.
Цитата:

Сообщение от Makarov
2. <b>owner: </b> <img src={`${item.owner.avatar_url}.jpg`} width="50px" height="50px"/> Инлайнить размеры - айяйяй. css loader настраивать влом было?)

ага)
Цитата:

Сообщение от Makarov
3. Я крайне рекомендую прописывать propTypes где это возможно

спасибо))
Цитата:

Сообщение от Makarov
Лол, еще шапку не везде убрал:

*faceplam*
убери плиз из коммента, а то я могу получить по шапке, я перезалью репозиторий)
Цитата:

Сообщение от Makarov
Ну и шутка в тему:

еще как в тему

Makarov 03.11.2016 17:56

cyber,
убрал

cyber 08.11.2016 23:46

вернул, ссылку))

cyber 10.11.2016 17:02

сейчас пишу не много на ангуляр 2, такое чувство что это реакт для мазахистов

cyber 10.11.2016 18:50

написал 2 одинаковых приложения на react и angular 2, и там и там архитктура редукса
реакт https://bitbucket.org/CyBer_UA/react...simple-app/src
ангуляр 2 https://bitbucket.org/CyBer_UA/angul...simple-app/src

Makarov 10.11.2016 22:48

cyber,
у меня вот такое же ощущение сложилось (впрочем с ангуляром я только игрался, а реакт у меня в продакшне, возможно это "эффект утенка"). С другой стороны тайпскрипт явно заслуживает внимания и многие выбирают А. именно по принципу "что бы заюзать чтобы писать на тайпскрипте?"


Часовой пояс GMT +3, время: 10:19.