Natalia
Гайс кто с rc-form какой паттерн для валидации селекта юзаете?
Viacheslav
Какие все ?
Тривиальная задача - есть поле для поиска, на котором висит onChange, который тригерит экшн. сага обрабатывает данный экшн. Необходимо сделать так, что-бы если в течении n-го времени стригерился еще один экшн - сбросить предыдущий
Viacheslav
howitworks
как вы решаете проблемы с круговой зависимостью ?типо есть компонент в /ui который импорит компонент с /view, а в этом компоненте импортится файл из /ui и получается замкнуотсть, ошибка архитектуры или есть решения на другом уровне ?
howitworks
/ui/index -> /ui/Comp -> /views/Comp -> /ui/index
Mikhail
Зачем внутри views/Comp рендерить ui/index, если это дочерний компонент?
howitworks
в ui/index экспортятся все из фолдеров внутри ui/
Mikhail
Это невозможно, логическая ошибка
howitworks
что невозможно
Andrey
/ui/index -> /ui/Comp -> /views/Comp -> /ui/index
не импортить ничего из структур выше импортить только из одноуровневых каталогов, либо которые ниже можно еще вынести в отдельный файл - то, что вызывает круговую зависимость
Mikhail
в ui/index экспортятся все из фолдеров внутри ui/
Ну это норм А зачем в каком-то дочернем компоненте ты импортишь самый верхний?
howitworks
если мне в ui нужен компонент из другого места, но он имеет в себе что то из ui, как ?
Igor
Нужен готовый бойлерплейт с бутстрапом и желательно с готовой версткой типа админ панели с бутстрапом, есть у кого такие вещи на примете? На реакте
howitworks
Ответь на вопрос
экспортишь или импортишь ?
howitworks
понял
howitworks
потому что это не конечный компонент, есть высший
howitworks
в котором и собирается из /ui - /views
howitworks
добавить еще одну сущность между ними ?
Mikhail
Я не понял твоего ответа) Но просто придерживайся тогда правила, что если где-то ты импортишь и используешь А внутри Б, то не можешь использовать Б внутри А, так как это тупо не имеет смысла
howitworks
ну тупо или нет хз, mobx tree так же делает
Mikhail
добавить еще одну сущность между ними ?
Если у тебя А использует Б, то Б является составляющей А <=> А не может быть составляющей Б
howitworks
просто они через internal создают все
howitworks
https://github.com/mobxjs/mobx-state-tree/tree/master/packages/mobx-state-tree/src по сути иденттично, internal -> A -> B -> A -> internal
Ivan
Вместо denounce - takeLatest, внутри воркера yield delay(1000)
Ivan
Почитал внимательно — у тебя уровнем выше что-то неправильно. Debounce нужен не для фетча, а для той саги, что вызывает фетч.
Looch
там надо fork и take, хотя takeLatest должен отменять
Looch
ток у меня оно чета не отменяло fetch,хотя возможно сам воркер и дропало
Ivan
Оно отменяет сагу. А фетч — это промис)
Если быть точным, то отменяет оно таску, которая создаётся при форке саги
Looch
Оно отменяет сагу. А фетч — это промис)
ну так какой в этом тогда смысл ? если оно даже загалисо генератор,об отмене надо самому парится. хотя это совсем не сложно
Александр
Ребзя, в react 16 поддержка sass из коробки же?
Looch
Если правильно написан воркер, то париться не надо.
там есть просто такая штука как yield cancelled()
Looch
и туда уже можно логику с abort кидать
Cybernated
Ребят, проект написан на React и MobX. Вроде как говорилось что если observed переменные изменяются, то компонент перерендерировается. Тогда вопрос такой, увеличит ли производительность приложения, если я большинство компонентов сделаю PureComponent?
Cybernated
Либо как это повлияет в целом, если я все ответы сервера загоняю в эти observed переменные
Valentin
Либо как это повлияет в целом, если я все ответы сервера загоняю в эти observed переменные
Посмотри что делает computed в MobX. Прям или сразу в исходники (это не сложно). Почаще используй его, где это необходимо и все ок.
Cybernated
И еще вопрос про PureComponents, допустим, у меня есть ItemList, в который я передаю пропсы. shouldUpdateComponent сравнивает ссылки пропсов, то есть если я не изменю ссылку пропса, он не перерисует компонент заново, хотя данные внутри пропса изменились. Как мне вызвать рендер ItemList, без создания новой переменной в state (для создания другой ссылки для пропса).
Cybernated
Смутил код, который на хабре нашел про Purе Components
Cybernated
handleClick() { const items = this.state.items; items.push('new-item'); this.setState({items: items}); } render() { return ( <div> <button onClick={this.handleClick} /> <ItemList items={this.state.items} /> </div> ); } Он не перерисует этот компонент из-за мутации в state
Cybernated
handleClick() { this.setState(prevState => ({ words: prevState.items.concat(['new-item']) })); } А тут перерисует, потому что есть ссылка на words Как не создавать words, но чтобы ItemList перерисовался
Valentin
Не вижу проблемы. Что то ты не так используешь. Попробуй все лишнее убрать. У тебя есть компонент который получает массив объектов, которые нужно вывести. Что здесь может пойти не так?) Упрощай, у тебя архитектурное болото.
Cybernated
Так приложуху то я написал, изначальный вопрос был "Как это сделать?". Сейчас пытаюсь оптимизировать это всё и запутался, что стоит применять, а что нет. Появился вопрос "Как это сделать лучше?"
Valentin
Так приложуху то я написал, изначальный вопрос был "Как это сделать?". Сейчас пытаюсь оптимизировать это всё и запутался, что стоит применять, а что нет. Появился вопрос "Как это сделать лучше?"
бррр class Store { const obseverList = observer.array([]); @computed get list() { return obseverList.slice(); } } тут где то провайдер и инжектим наш стор в компонент... const RenererererenderMyList = ({ list = [] }) => list.join(', ');
Valentin
типа connect(Store)(List) или для компонента, ох давно уже не писал на мобиксике =((
Valentin
Почему?
Отделять логику от рендеринга это мое личное мнение
Алексей
Отделять логику от рендеринга это мое личное мнение
Не спорю, идея здоровая. А как сейчас разделяешь?
A
Добрейшего вечерочка. Подскажите, пожалуйста, в чем может быт проблема при подключении scss, или как правилно подключить.. В коде пишу: import './App.scss' В конфигах prod и dev настроил: { test: /\.(sass|scss)$/, use: [ require.resolve('style-loader'), require.resolve('css-loader'), require.resolve('sass-loader') ] }, При этом на сайте выдает ошибку: http://prntscr.com/pojmw2
Valentin
Не спорю, идея здоровая. А как сейчас разделяешь?
Логика отдельно, реакт отдельно, ui отдельно. Никто ничего не знает.
Алексей
Логика отдельно, реакт отдельно, ui отдельно. Никто ничего не знает.
Соответственно должна быть функция инициализации всех связей, это интересно)
Valentin
Соответственно должна быть функция инициализации всех связей, это интересно)
Нет. У меня IoC. Все на контейнерах. InversifyJS сам разматывает инверсию зависимостей и подтягивает нужные компоненты.
Valentin
И не какие в этом минусы если есть)
СЛОЖНА СЛОЖНА СЛОЖНА. Сейчас другой тут, все модули как отдельные пакеты и лерна их собирает. И это так просто и... в общем другая архитектура. Не такая подвижная, но есть свои плюсы
Valentin
Ui как бы жёстко привязан к реакт у
Это ты жестоко обвязал себя реактом.
Default
iot ?
Internet of Things
Default
🌚
Алексей
iot ?
Ну ты используешь inversifyJS в качестве реализации
Valentin
А связи с iot решением жёсткой не получается в итоге?
Я не знаю. А какая именно проблема? Я не работал с iot
Алексей
Я не знаю. А какая именно проблема? Я не работал с iot
Очепчтка вышла, я имел ввиду инверсию зависимостей
Valentin
Очепчтка вышла, я имел ввиду инверсию зависимостей
и да и нет, больше практики, больше SOLID. И постоянно поддерживаешь код... Зато с каждым месяцем большую часть задачи можно сделать через композицию уже написанного. А так же система готова к кровавому Аджайлу. Что хотите меняйте, вообще пох. + есть OOD / DDD. Но тут еще оч мало опыта. Можно сказать, только, что мне нравится и интересен путь с IoC, но сейчас работаю по другой архитектуре и развитие приостановленно
Dmitry
Это ты жестоко обвязал себя реактом.
Ты серьёзно? Ты юзаешь апи реакта. Рендеришь в нем. Как у тебя вью может быть на нем не завязано?
Valentin
Ты серьёзно? Ты юзаешь апи реакта. Рендеришь в нем. Как у тебя вью может быть на нем не завязано?
Завязано. Просто давайте отделять элементы которые должны иметь только свое внутренее состояние UI и не более, о остальное приходит не из реакта. Извините, что я не осознал, что должен писать очевидные вещи
Valentin
View может быть как кастомный слой при желании
так раньше думал(и), что бы могли макс быстро отказаться от реакта. Но это оч оч оч оч усложняет разработку, если не хотите перегорать, стоит использовать больше реакта. Тот же роутинг, тот же ui и тд