MobX вместо React State

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ส.ค. 2024
  • Первая часть: • Пишем список задач(tod...
    Код: drive.google.c...
    mobx документация: mobx.js.org/
    sort в javascript: developer.mozi...

ความคิดเห็น • 34

  • @timofeyaksyonov2346
    @timofeyaksyonov2346 4 ปีที่แล้ว +4

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

  • @MonstantinKitin
    @MonstantinKitin 4 ปีที่แล้ว +1

    Обычно сомнительно отношусь к видео с маленьким кол-вом просмотров, но тут все понятно, спасибо

  • @buyshark3838
    @buyshark3838 4 ปีที่แล้ว +1

    внятно, доходчиво, по делу, без воды. отличное видео. лайк и подписка

  • @s.konstantin
    @s.konstantin 4 ปีที่แล้ว +5

    Понятно, доходчиво, спасибо.

  • @andreewm15
    @andreewm15 3 ปีที่แล้ว +5

    полчаса разбирался почему tasks undefined ))
    Decorate doesn't exist anymore in v6, so closing
    github.com/mobxjs/mobx/issues/2268

  • @TheKoloky
    @TheKoloky 3 ปีที่แล้ว +2

    let tasks = this.tasks это все равно, что использовать this.tasks, объекты передаются по ссылке

  • @svgaryaev
    @svgaryaev 4 ปีที่แล้ว +2

    5:16 метод sort не меняет исходный массив, а возвращает новый, так что slice здесь не нужен. У тебя неплохо получается, продолжай.

    • @user-bc2nc5lt5p
      @user-bc2nc5lt5p  4 ปีที่แล้ว +3

      Спасибо!)
      По поводу sort в mobx документации написано так:
      Unlike the built-in implementation of the functions sort and reverse, observableArray.sort and reverse will not change the array in-place, but only will return a sorted / reversed copy. From MobX 5 and higher this will show a warning. It is recommended to use array.slice().sort() instead.

    • @svgaryaev
      @svgaryaev 4 ปีที่แล้ว +1

      ​@@user-bc2nc5lt5p​ так нужно же было only return a sorted copy, для этого slice не нужен)
      upd: был не прав. Попробовал без slice, работает правильно, но предупреждениями сыпит в консоль не останавливаясь, проще уже оставить.

    • @user-bc2nc5lt5p
      @user-bc2nc5lt5p  4 ปีที่แล้ว +1

      Да, именно из за предупреждений я использовал slice! :)

  • @romankotenko7
    @romankotenko7 3 ปีที่แล้ว +1

    Don't use an arrow func in the react class component

  • @lordunitaz
    @lordunitaz 2 ปีที่แล้ว

    Привет. Хороший ролик. Но неизменяемость данных - это только про редакс. В мобыксе такого придерживаться нет необходимости.

  • @romanchutak
    @romanchutak 2 ปีที่แล้ว

    пойдет, правда иммутабельность с мобх не нужна, это редакс осадок у тебя)

  • @vladyehorov6615
    @vladyehorov6615 4 ปีที่แล้ว +1

    Привет, а что за тема у тебя в Visual Studio Code?

  • @user-kj8sw6js6y
    @user-kj8sw6js6y 3 ปีที่แล้ว +1

    Привет! А ты знаешь, чем плохо объявлять стрелочные функции в рендере? Ты же людям знания несешь.
    И концепция редакса с неизменяемыми данными совсем не вяжется с концепцией мобикса. Для чего переменная вообще не понятно.

  • @AndreyPaskal
    @AndreyPaskal 3 ปีที่แล้ว

    Артём, спасибо! Хотелось бы найти обоснование необходимости (полезности) замены setState (или хуков) на MobX. Можете привести ссылочку на статью на эту тему? Для вас этот выбор очевиден, на сколько я понял.

    • @user-bc2nc5lt5p
      @user-bc2nc5lt5p  3 ปีที่แล้ว +1

      Необходимость замены setState на глобальное состояние(например redux, mobx, effector, react context и др) стоит в том случае, если данные состояния в вашем приложении используются повсеместно, т.е. не на одной странице или в одном компоненте. Например в реальных приложениях на реактивных фреймворках(или любых других инструментах для создания реактивных приложений, напр. Flutter) в 100% случаев в глобальное состояние выносятся данные авторизации пользователя, т.к. зачастую для приложений с авторизацией требуются отдельная проверка доступности перехода на ту или иную страницу приложения в зависимости от статуса авторизации пользователя. Ну и просто это удобно, когда есть один источник состояния и его "правдивости". В то же время никогда в глобально состояние не стоит выносить данные, которые требуются для рендера одной страницы, например страница "видео" на TH-cam, она рендерится единожды, соответственно при получении данных с сервера (Rest API).

    • @AndreyPaskal
      @AndreyPaskal 3 ปีที่แล้ว

      @@user-bc2nc5lt5p Ага понятно. Я использую компонент верхнего уровня (обычно он называется App) для хранения глобальных состояний и передаю остальным компонентам методы обновления состояний через props.

  • @supfiger
    @supfiger 4 ปีที่แล้ว

    лайк))

  • @MatadorRL
    @MatadorRL 4 ปีที่แล้ว +1

    спасиб за видос :) можешь также по redux сделать?

    • @user-bc2nc5lt5p
      @user-bc2nc5lt5p  4 ปีที่แล้ว +1

      Да, в будущем обязательно будет, но уже на другом приложении. Думаю записать гайд на написание аналога Trello☺️

    • @eugenegavrilov2618
      @eugenegavrilov2618 4 ปีที่แล้ว

      по redux же сотни роликов и десятки курсов

  • @dmitryprotassov8477
    @dmitryprotassov8477 4 ปีที่แล้ว +2

    Хорошо бы если бы еще был исходный код с MobX

    • @user-bc2nc5lt5p
      @user-bc2nc5lt5p  4 ปีที่แล้ว +2

      drive.google.com/file/d/1Mo54MxQopxovqOJi2eCamqQVcZCIpfa5/view?usp=sharing

    • @ruslankarimov5643
      @ruslankarimov5643 3 ปีที่แล้ว

      @@user-bc2nc5lt5p скачал код, запустил npm i
      получаю много ошибок:
      npm WARN tar ENOENT: no such file or directory, open 'D:\Distr\_React\Mobx\todo-app
      ode_modules\.staging\es5-ext-4ec2f638\string
      aw\shim.js'
      npm WARN tar ENOENT: no such file or directory, open 'D:\Distr\_React\Mobx\todo-app
      ode_modules\.staging\es5-ext-4ec2f638\test\array\#\@@iterator\shim.js'
      npm WARN tar ENOENT: no such file or directory, open 'D:\Distr\_React\Mobx\todo-app
      ode_modules\.staging\es5-ext-4ec2f638\test\array\#\concat\shim.js'
      npm WARN tar ENOENT: no such file or directory, open 'D:\Distr\_React\Mobx\todo-app
      ode_modules\.staging\es5-ext-4ec2f638\test\array\#\copy-within\shim.js'
      что это? Как их убрать?

  • @sauvignonblanc5086
    @sauvignonblanc5086 4 ปีที่แล้ว

    А вот такой вопрос: требуется создать сайт с нуля (pet-project). Что делать если не изучал основы веб--дизайна, а владеешь только CSS3? Просто сразу начинать стилизовать, рандомно крутить настройки под себя, без psd макета?

    • @user-bc2nc5lt5p
      @user-bc2nc5lt5p  4 ปีที่แล้ว

      Ну про psd ты конечно загнул) Делать прототипы/макеты в ФШ это прошлый век!)
      Советую figma - там очень быстро и удобно можно накидать дизайн. Большое сообщество, куча гайдов.
      В общем то можно и без макета начать сразу верстать, но это будет довольно сложно, т.к. тебе придется фокусироваться на нескольких вещах сразу.

    • @sauvignonblanc5086
      @sauvignonblanc5086 4 ปีที่แล้ว

      @@user-bc2nc5lt5p Ну я имел ввиду любые приложения) Помню работал немного с figma, avocode (free 14 days), zeplin. Но там просто смотрел css свойства :)
      Окей, спасиб, попробую👌

  • @jayjamyson5004
    @jayjamyson5004 3 ปีที่แล้ว

    а его можно задеплоить?
    на heroku например
    будет работать?

    • @user-bc2nc5lt5p
      @user-bc2nc5lt5p  3 ปีที่แล้ว

      Да, но логичнее на Netlify(или gh pages) т.к. это все таки статик хостинг а heroku является PaaS

  • @dmitrysuhotskylessonjs3981
    @dmitrysuhotskylessonjs3981 4 ปีที่แล้ว

    Я думал что хранилище требуется для того, чтобы отказаться от перекидывания данных в компоненты через props

    • @user-bc2nc5lt5p
      @user-bc2nc5lt5p  4 ปีที่แล้ว

      Без пропсов компонент не сможет быть переиспользуемым. В стейт хранятся данные компонента, которые не зависят от внешнего источника(страницы или другие компоненты)

  • @vladislavivanov4124
    @vladislavivanov4124 4 ปีที่แล้ว

    gj