Size: a a a

JavaScript.Ninja

2020 September 01

v

vasilich in JavaScript.Ninja
Это немного отличное от «пройду обязательно»
источник

v

vasilich in JavaScript.Ninja
К тому же - вернёмся к тому что список фильтров у тебя, скорее всего, приходит массивом. Если все так то тебе даже for in не здался. функцией map обойди весь массив и измени каждый элемент...
источник

IK

Illya Klymov in JavaScript.Ninja
Богдан
Но появляется вопрос - что если компоненту нужно обратиться к данным из других частей состояния приложения? Например компоненту проекта вдруг понадобилось прочитать что-то из родительского объекта папки. Тут можно поступить по разному - можно передавать через пропсы родительский объект папки
<div>
{folder.projects.map(project=
 <Project project={project} folder={folder}/>
)}
</div>
Но если вдруг к папке потребовалось обратиться компоненту задачи то придется пробрасывать через кучу компонентов объект с этой папкой (т.н пробрасывать пропсы)
Можно решить проблему проброса пропсов установкой реакт-контекстов но это все костыли - самое простым и элегантным решением будет записать в поле самого объекта ссылку на его родительский объект при создании.
И таким образом у объекта задачи будет поле .project которое будет ссылаться на проект, дальше у проекта будет поле .folder которое будет ссылаться на объект папки и т.д
В итоге когда мы передали компоненту задачи объект задачи то компонент может по цепочке ссылок на родительские объекты обратиться к любой части состояния приложения сохраняя видимость локального стора
Например в компоненте задачи нужно отобразить стиль в зависимости от того находится задача в проекте а тот в папке с флагом архивации
const Task = ({task}) => (
<div style={{
 background: task.project.folder.archived ? `gray`: `white`
}}>
 <input
   value={task.text}
   onChange={(e)=>
     task.text = e.target.value
   }
 />
 ...
</div>
)
Видите как все просто? C одной стороны можем работать с полученным объектом как с локальным стором и обновлять нужные поля а с другой стороны этот объект является частью дерева глобального состояния и мы можем обратиться к нужной части если просто пройтись по родительским ссылкам task.project.folder.archived ? "..." : "..."
Ну и наконец тот факт что все это состояние одновременно хранится в единственном объекте AppState позволяет получить преимущества работы с состоянием приложения как с единственным объектом - например выполнить сериализацию и сохранить в локал-сторадже и т.д
И поэтому когда говорят что с mobx больно работать потому что это отдельные сторы у меня возникает чувство "wtf" :)
Вы взяли и получили одну большую глобальную переменную :)
источник

Хр

Хладнокровный и обая... in JavaScript.Ninja
ктонибудь объяснит мне почему ключи string
источник

DP

Dmytro Petunenko in JavaScript.Ninja
Потому что там значения? :)
источник

M

Misha in JavaScript.Ninja
Dmytro Petunenko
Потому что там значения? :)
Нет
источник

Хр

Хладнокровный и обая... in JavaScript.Ninja
Dmytro Petunenko
Потому что там значения? :)
вопрос почему это не number?
источник

IK

Illya Klymov in JavaScript.Ninja
Хладнокровный и обаятельный радист Морзе
ктонибудь объяснит мне почему ключи string
Потому что ключи в объектах это строки и символы
источник

IK

Illya Klymov in JavaScript.Ninja
Это в спеке написано
источник

Хр

Хладнокровный и обая... in JavaScript.Ninja
тип for in массив как объект перебирает
источник

Хр

Хладнокровный и обая... in JavaScript.Ninja
понял)
источник

v

vasilich in JavaScript.Ninja
Хладнокровный и обаятельный радист Морзе
тип for in массив как объект перебирает
Читайте доки Шура, они золотые)
Где-то там написано что массив в жс это объект со слегка маланским подходом к ключам)
источник

Хр

Хладнокровный и обая... in JavaScript.Ninja
vasilich
Читайте доки Шура, они золотые)
Где-то там написано что массив в жс это объект со слегка маланским подходом к ключам)
Не вчитывался как работает for in в деталях, но уже прочел) Не очевидно что при переборе он ключи массива в строки переводит. Спасибо буду внимательнее читать)
источник

NK

ID:0 in JavaScript.Ninja
https://youtu.be/p6BenJXkqYQ
Работать, работать и еще раз работать
источник
2020 September 02

DN

Dima Nazdratenko in JavaScript.Ninja
подскажите сделал простой примерчик html js 2 файла.
Когда открывал html через кнопку в ide webstorm то все ок запускало. Если просто кликнуть на html то открывает и ошибки в консоли браузера
источник

DN

Dima Nazdratenko in JavaScript.Ninja
надо как-то сервер запускать я так понимаю?
источник

IK

Illya Klymov in JavaScript.Ninja
Да
источник

DN

Dima Nazdratenko in JavaScript.Ninja
как это на коленке сделать за пару мин? какую либу юзают?
источник

IK

Illya Klymov in JavaScript.Ninja
Dima Nazdratenko
как это на коленке сделать за пару мин? какую либу юзают?
В директории вашего проекта напишите npx serve
источник

IK

Illya Klymov in JavaScript.Ninja
Если у вас нода установлена
источник