Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Feb 05 2017 13:29
    @listochkin banned @byhub
  • Sep 27 2016 12:16
    @listochkin banned @vsevolodg
  • Mar 17 2016 14:10
    User @ALF-er unbanned @xgrommx from this room
  • Mar 17 2016 14:10
    User @ALF-er unbanned @chicoxyzzy from this room
  • Mar 17 2016 14:06
    @ALF-er banned @xgrommx
  • Mar 17 2016 14:06
    @ALF-er banned @chicoxyzzy
  • Jan 03 2016 23:34
    @RReverser banned @vasivas
  • Mar 27 2015 20:23
    User @RReverser banned @doneck-russia from this room
  • Mar 19 2015 20:58
    User @mr-mig banned @pgr-ru from this room
  • Mar 14 2015 23:15
    User @mr-mig banned @putin-hero from this room
  • Mar 14 2015 22:29
    User @mr-mig banned @stepan-bendera from this room
vasivas
@vasivas
export default class LikeInfo extends Component{
    constructor(props){
        super(props);
    }
    static defaultProps = {
        store: null,
    };

    static propTypes = {
        store: React.PropTypes.any.isRequired,
    };


    state = {
        like: this.props.store.like
    };

    store_changeLikeHandler = (event)=>{
        this.setState({
            like: this.props.store.view
        });
    };

    componentWillMount(){
        this.props.store.on('change', this.store_changeLikeHandler);
    }

    render() {
        return <div>{this.state.like}</div>;
    }
}
после того как произойдет рендер свойство like у state обнуляется?
Мне сейчас в голову пришла мысль, что стор это просто value object, который при помощи событий эмитирует односторонний биндинг. Это так?
Ведь если бы стор был просто хранилищем, то он не должен был бы иметь события. А нет, он не просто имитирует биндинг, он же ещё и содержит логику обработки данных полученных от компонента...
vasivas
@vasivas
у меня вот какое сложилось впечатление... что когда я слышу о реакте, о нем говорять как о шаблонизаторе на котором просто удобно писать приложения, которые не вписываются в рамки установленных ооп правил. Ведь нельзя написать сложное приложение, которые не будет иметь логическую модель. и если я начну писать приложение у пользователей которого от количества лайков будет меняться цвет сообщений, сигнализруя тем самым о важности, то вот это самое количество лайков будет логикой приложения, а значит хранится должно в модели. И получается что когда я прибавлю пользователю один лайк, кликнув по кнопке, компонент который отвечает за лайки должен послать событие диспетчеру и передать ему значение одного лайка. Он передаст этот клик в стор... а что должен сделать стор?
и ещё допустим после увеличения лайка должны лампочки в приложении замигать...
И Вас видимо нет, по этому я продолжу, чтобы Вы поняли о чем я.. И вот по логике которую я слышу, стор запишет эти данные и скажет чтобы компонент запустил лампочки. Но стоп, это же логика приложения! А значит стор должен сначала уведомить модель и если та даст добро, то только тогда он должен (стор) запустить лампочки.
This message was deleted
vasivas
@vasivas

И вот с этого момента начинается самое интересное... Вы делаете в своих приложениях так -

var data = [];
data.push(user);
data.push(view);
data.push('helloword');

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

vasivas
@vasivas
И Ваш последний пример с db.getSomeData() говорит о том, что Вы не к стору обращаетесь, а к модели. Это только она должна с базой работать.
vasivas
@vasivas
  1. Главный (root) компонент - это композиция из дерева этих функций.
  2. Соответсвенно главному компоненту нужно передать соответственное дерево данных для всех компонентов.
    Это дерево данных есть стор. Просто граф данных не более. Никакой ни умный ни прочее.
  3. После мутации стора диспетчер вызывает ререндер нашего приложения с новым стором.
Скажите, я правильно трактую Ваши слова - я рендерю целую страницу передав в неё один большой стор для все странице? И затем чтобы перерисовать один элемент я не меняю предназначенный конкретно для него стор, а изменяю опять один большой и опять передаю его в компонент всей странице?
Разве не нужно создавать столько сторов, сколько компонентов и перерисовывать конкретный компонент вместо всей странице?
И ещё у меня так и не появилось ответа на вопрос, где хранить компоненты, которые пока не нужны?
ВЕсли отбросить реакт роутер и делать свой, то при изменении маршрута роутер не будет уведомлять представление, это не его обязанность по определению. Но и компонент MainContainer не может хранить массив со всеми остальными компонентами-страницами. А где тогда должны хранится эти компоненты страницы, пока не пришла очередь ставить их и рендерить?
vasivas
@vasivas
Вы точно меня только запутали, да и сами наверное проспавшись это заметете. Ведь Вы говорите что компонент говорит диспетчеру что нужно что-то сделать, а затем диспетчер говорите компоненту что нужно обновится. Даже если откинуть что-то "от себя" то везде говорится что стор говорит компоненту об обновлении... Разве не так?
Kyrylo Yakovenko
@blia

Скажите, я правильно трактую Ваши слова - я рендерю целую страницу передав в неё один большой стор для все странице? И затем чтобы перерисовать один элемент я не меняю предназначенный конкретно для него стор, а изменяю опять один большой и опять передаю его в компонент всей странице?

Именно так. Но реакт имеет VirtualDOM потому в настоящем доме он обновит лишь то, что отличатся.

Даже если откинуть что-то "от себя" то везде говорится что стор говорит компоненту об обновлении... Разве не так?

Стор - это объект, даже не класс, это тупо набор данных, которые передаются в проперти корневого компонента и дальше уже расходятся по всем компонентам по дереву.

Вы точно меня только запутали, да и сами наверное проспавшись это заметете.

А на этом я закончу беседу. Удачи.

vasivas
@vasivas
@blia нет, Вы не подумайте что я грублю, я просто хочу подчеркнуть что Вы говорите то, что даже в контексте flux не говорят.
и мне показалось что Вы немного запутались.
vasivas
@vasivas

Я вот о чем http://habrahabr.ru/post/249279/ там в пункте 3 говорится что

  1. Ваше хранилище посылает событие „Change“
    а в четвертом говорится вот что -
  2. Ваше представление реагирует на событие „change“

А Вы то и дело употребляете слово flux и говорите что все наоборот и что все статьи на хабре попросту неправильны.

Тоже самое и в офф документации...
По этому мне до сих пор кажется что Вы просто ошиблись..
И если бы не праздничные дни, то я бы и не подумал подумать что Вы пьяны :smile:
Kyrylo Yakovenko
@blia
Вот набросал тебе элементраную систему, которая работает с реакт по FLUX. Уж не знаю как проще объяснить.
var store = {
  products: null,
  clicked: false
};

function dispatcher (action) {
  if (action === 'fetch products') {
    store.products = true;
  }
  if (action === 'click') {
    store.clicked = true;
  }
  react(store, dispatcher);
}

function react (data, dispatcher) {
  if (data.clicked) {
    console.log('clicked');
  }
  if (data.products) {
    console.log('products loaded');
  } else {
    console.log('no products');
    // Fire action
    dispatcher('fetch products');
  }
}

// init
dispatcher();

// Emulate user action
setTimeout(function () {
  dispatcher('click');
}, 1000);
Вывод
› node index.js
no products
products loaded
clicked
products loaded
vasivas
@vasivas

@blia ну вот минималистические примеры-то как раз и не нужны, ими весь гугл забит.
И Ваш наводит меня на две мысли, первая из которых говорит о надуманности типов -

var sorokSem:Batman = 47;

А вторая, что диспетчер делает то что не должен делать. То есть из него сделали супер-божественный-объект.

И если изменить названия, то получится АнимичнаяМодель=>ТолстыйУродливыйКонтроллер=>Представление Или Вы не согласны? А если ещё КомпонентРоутер добавить, то нужно занимать очередь за следующей реализацией Шнюкс, в которой представление переименуют в модель а модель в представление.
Это даже не биндинг, то что Вы показали, за такое казнить нужно.
Это не программирование, а просто убийство того времени, которое я на книги потратил. И те кто их писал должны просто застрелится.
vasivas
@vasivas
Добрые фейсбукеры дали чудо представление, зачем его губить такой ерундой... Или нужно ждать от них сигнала что бы они разрешили писать правильно?
Это как с ангуляром. В него засунули все что только можно, его специалисты по ходу статей переабулись сотня раз, мол сначала орали что нужно так, потом что нужно так, а потом что они всегда делали только так. А в итоге пишут все так и будут писать так как написано в вики.
Так как было написано в Gof.
И тут тоже самое... Залезли безумые ms принесли долюбанный data-binding и теперь его что все будут во всю фигню сувать лишь бы это было модно, а потом скажут что так и не делали.. я не знаю что это..
вам этот код нужно лет через десять показать, чтобы Вам стыдно стало.
vasivas
@vasivas
И в ентити систем всегда измененные компоненты говорят что их изменили, а не проверяют все миллионы частиц на изменение.
vasivas
@vasivas
Я правда не могу остановится и хотя я вернусь к этому разговору потом, но все равно.. А если комопненты ничего не хранят, сторы просто тупые объекты, диспетчер делает больше чем ему положено, роутер это компонент.. а где тогда логика приложения? наверное её нужно писать в тасках и ждать пока они присигналются к диспетчеру?))
vasivas
@vasivas
@blia я с Вами не первый раз разговариваю и у меня сложилось мнение что Вы вполне разумный человек. Но сегодня Вы забрали у меня вторую половину суток второго новогоднего дня. И я не знаю под чем Вы это сделали и зачем Вы специально говорили то что противоположно истине, но у меня есть доброе намерение сравнить Ваш поступок просто с убийством своего разума. Я искренне надеюсь что завтра при отходнике Вы испытаете все круги ада за такой поступок. Просто не хочется грубить Вам, но удержаться я не могу.
Terry Sahaidak
@terrysahaidak
@vasivas почитай код редакса, подивись як на ньому пишуть, а не страдай фігньою.
Aleh Kashnikau
@mkusher
на тему редакса норм, только надо учитывать, что оно все там не про ооп
Ingvar Stepanyan
@RReverser
@vasivas Перечитав. Що за брєд? Людина пробує допомогти, а ти для чогось заводиш про ООП і починаєш потім грубити що тебе пробували навчити як правильно, а не так як звик O_o
Причому сам же пів дня писав монологи (ніхто не відповідав), а потім - "забрали у меня вторую половину суток" O_o

Это даже не биндинг, то что Вы показали, за такое казнить нужно.

Ясно що це блін не біндінг, це реакт, тут не треба ніяких біндінгів.

А Вы то и дело употребляете слово flux и говорите что все наоборот и что все статьи на хабре попросту неправильны.

Відкрию страшну таємницю - хабр не дуже надійне джерело інформації :)

vasivas
@vasivas
Вы все о чем? Мне вчера весь день вдалбливали что стор не шлет событий, а все статьи говорят что шлет. Мне пришлось перечитывать несколько статей и тратить время на объяснения раз в час от человека, от которого я ждал помощи, а не стеба. Или Вы тоже все будите говорить что в Ваших статьях стор события не шлет?
Или легче забыть об этом и найти одну незначительную ошибку не относящуюся к этому обсурду и на её основании говорить что я не прав?
Vyacheslav Slinko
@vslinko
о каких сторах речь?
Denis Stoyanov
@xgrommx
Ingvar Stepanyan
@RReverser

Мне пришлось перечитывать несколько статей и тратить время на объяснения раз в час от человека, от которого я ждал помощи, а не стеба.

Ну тут типу не репетитори чи щось подібне, очікувати що хтось буде кожну хвилину чекати і відповідати на всі запитання всі пів-дня - неправильно.

Тут просто живі люди, такі ж як ти, які спілкуються між собою і відповідають на невеликі конкретні запитання, коли є час і можливість.
Я зараз не про стори і не про помилки, а про сам тон ніби хтось тобі щось винен, і не сидів, не відповідав на все, що захочеш.
Alexander Smaga
@alsma
народ а ктото юзает https://github.com/kriasoft/react-starter-kit ?
vasivas
@vasivas
@RReverser я не говорю что мне обязаны помогать, речь о том, что человек который знает правильный ответ, половину дня заставляет поверить в обратное. Это что? Нормально?