Максим, спасибо за Вашу книгу, очень помогла разобраться с react.
Первая часть Вашего сообщения проясняет react-rudux-подход в описанном мной случае: в одном экшене вызываем другой. Я думал о таком решении, меня смутил тот факт, что обновление корзины будет инициироваться в неких экшенах, не имеющих непосредственного отношения к компоненту. Мне показалось это не очень хорошей идеей. Компонент обновляет "кто попало", а не компонент обновляется в зависимости от какого-то события, на которое он подписан - что не мой взгляд более понятно, открываешь код компонента и видишь, что он обновиться если кто-то вызовет событие "Обнови_корзину". Иначе вообще не понятно что он может обновляться, у него даже метода такого нет.
Но раз так принято, то ок.
А вот вторая часть Вашего ответа мне не до конца понятна.
Допустим, есть у меня компонент cart.container с таким кодом:
function mapStateToProps(state) {
return {
userIsAuthorized: state.user.isAuthorized
}
}
// state - это store - объект состояния приложения.
и компонент cart, которому свойство userIsAuthorized в пропсах не нужно от слова "совсем".
Зато компонент cart.container хотел бы при изменении этого свойства делать ajax-запрос и обновлять свои данные в state. Разве это возможно без костылей?
И вот тут не понятно: "если говорить об частном случае, скорее всего reducer с названием rate"
reducer - это же функция, а здесь просто rate - ссылка на свойство объекта. Даже есть посмотреть в Вашем примере, state - это объект состояния, а свойство user связано со свойством state.user, не с reducer'ом.
Или я что-то не понимаю?
Андрей: лучше говорить "работал в качестве фрилансера, поэтому был ИП". Ваш опыт работы в магазине никого не интересует, на таких работах интересуют технические навыки, чтобы они вообще были :)
Андрей: В Вашем возрасте столкнулся с такой же проблемой. Тоже был ИП с магазином. В менеджеры не брали (правда, я даже не думал, что причина в прошлом ИП), в продавцы тоже как-то не получалось...
Прикинул, что я умею делать: я разбирался в шаблонизаторе Битрикс т.к. сам поддерживал свой магазин на этом движке. С этим я и пошел на собеседование в "поддержку сайта". Показал, что могу верстать - взяли. Надо сказать, что потом я там дорос до руководителя отдела и сам проводи собеседования. Так вот выбирать было не из чего, на такие вакансии идут совсем никакие личности, просто профаны, каким я и был, когда устраивался.
Чтобы было понятно, что это за профессия: в вакансии написано "знания php, html, android, mysql, mongodb, битрикс, джумла, css... и еще много бреда" Вот это как раз для тех, кто ничего не знает, но понимает значения перечисленных слов.
В общем, поработал там. Текучка большая, быстро дорос до руководителя. Но при этом я постоянно расширял кругозор, дома по вечерам делал свои проекты, читал статьи, лепил хеловорды.
Когда мой уровень ничегонезнания стал не совсем позорным, я начал рассылать резюме, делал тестовые задания и меня в более профессиональный коллектив, где мой уровень вырос за год в миллион раз.
Сейчас я не имею проблемы с востребованностью на рынке труда, имею зарплату выше средней по Москве раза в два и не боюсь потерять работу.
Сергей: ну да, если в файле используются переменные из _variable.scss, то надо его непосредственно в этом файле подключать через import
Мы абсолютно аналогично делаем с библиотеками JS, если нужна какая-нибудь lodash, то ее (точнее ее метод, но не суть) придется импортировать в тот модель, где она нужна. И в другой модуль ее так же придется импортировать.
Сергей: вы хотите объявить переменные глобально и потом использовать их в компонентах?
Возможно и есть какой-то способ это сделать, но сама компонентная идеология Ангуляра этого подхода не поддерживает. В вашем компоненте появляются зависимости, не описанные в самом компоненте. Это плохо для реиспользования компонента. Поэтому предполагается, что вы все зависимости импортируете в тот файл, в котором они используются.
Вы имеете ввиду ошибку в nunjucks? Global undefined
В функцию вместо this (вверху) передается undefined, в результате аргумент global одного из внутренних методов остается без значения.
Выяснил в данный моменте что ломает конкретно presets[]=es2015, без этой настройки все работает корректно.
Да, решение рабочее. Но в моем случае я не хотел бы рендерить окно сразу, оно возможно пользователю и не будет показано. Зачем сразу ему все барахло грузить?
Если окно нет - его надо отрендерить по событию, если оно уже есть - обновить данные (при необходимости) и просто показать.
У меня к сожалению тоже нет такой возможности.
Но по моему опыту скажу, что обычно если везде все хорошо, а в одном актуальном браузере какая-то ж... значит где-то банальнейший косяк, который другие браузеры просто исправляют самостоятельно, а этот не хочет. И пустой head очень похож на такой.
Нет, Вы не перепутали аргументы.
Смотрите на строку: emptyCtor.prototype = parent.prototype;
здесь в прототип функции emptyCtor копируются все значения из прототипа parent
Когда Вы передаете ParentClass как аргумент, то происходит следующее:
в emptyCtor копируются свойства из прототипа ParentClass.
А там Ваших свойств нету! this.a - это не запись в прототип.
(Специально не пишу код, чтобы Вы поняли сам принцип, если будет совсем не понятно - напишите, я тогда решение приведу. )
Хотим за 140к найти крутого фронтендера. Почти год хотим. На собеседованиях повторяется описанная Вами ситуация, только про фронтенд.
Но на самом деле понимаем, что за 140к найти человека такого уровня.... ммм... сложно.
А вот для битриксоида это предел мечтаний и самая борзая цифра, какую он может написать в резюме.
Первая часть Вашего сообщения проясняет react-rudux-подход в описанном мной случае: в одном экшене вызываем другой. Я думал о таком решении, меня смутил тот факт, что обновление корзины будет инициироваться в неких экшенах, не имеющих непосредственного отношения к компоненту. Мне показалось это не очень хорошей идеей. Компонент обновляет "кто попало", а не компонент обновляется в зависимости от какого-то события, на которое он подписан - что не мой взгляд более понятно, открываешь код компонента и видишь, что он обновиться если кто-то вызовет событие "Обнови_корзину". Иначе вообще не понятно что он может обновляться, у него даже метода такого нет.
Но раз так принято, то ок.
А вот вторая часть Вашего ответа мне не до конца понятна.
Допустим, есть у меня компонент cart.container с таким кодом:
и компонент cart, которому свойство userIsAuthorized в пропсах не нужно от слова "совсем".
Зато компонент cart.container хотел бы при изменении этого свойства делать ajax-запрос и обновлять свои данные в state. Разве это возможно без костылей?
И вот тут не понятно: "если говорить об частном случае, скорее всего reducer с названием rate"
reducer - это же функция, а здесь просто rate - ссылка на свойство объекта. Даже есть посмотреть в Вашем примере, state - это объект состояния, а свойство user связано со свойством state.user, не с reducer'ом.
Или я что-то не понимаю?