@react_js

Страница 1667 из 5115
М
10.07.2017
17:29:00
Я сейчас это делаю через position absolute. То есть установил на img transition и меняю значение right 0, 100%, 200%

Но при неизвестном количестве фоток хз как быть

Олег
10.07.2017
17:30:51
Фотки в массив, длина массива известна

Например

Google
М
10.07.2017
17:31:30
Да, фотки и так в массиве

Влад
10.07.2017
17:31:34
Да при чём тут забудь про jQuery

Мне нравится подход там

М
10.07.2017
17:31:55
А как руками сделать без package, можете объяснить?

Влад
10.07.2017
17:31:55
Вызвал метод увидел окно

М
10.07.2017
17:32:00
Абсолютно тривиальная задача то

Artyom
10.07.2017
17:32:09
У тебя есть три фотки. Центральная всегда видна, правая и левая для смены. Как только произошла смена, через flex order меняешь их местами, и в блоке не видимых фоток подгружаешь новые. Все

М
10.07.2017
17:32:18
Вызвал метод увидел окно
Ну так у тебя кнопка и окно это один компонент, но окно спрятано пока стейт 0

Влад
10.07.2017
17:33:28
Вот это и создает проблему))))

Влад
10.07.2017
17:33:50
Вложенность большая

Верстка попапа лезет

Google
Влад
10.07.2017
17:34:17
Если его в корень положить все ок

М
10.07.2017
17:34:19
Ну с вёрсткой разберись)

Влад
10.07.2017
17:34:37
Действительно

))

М
10.07.2017
17:34:51
Это легче, чем связывать кнопку в разных компонентах и попап, имхо

Влад
10.07.2017
17:35:17
Ну не скажи, переписывать всю верстку которую делал не я...

Artyom
10.07.2017
17:35:36
Попап(вообще все всплывающее) рендерится отдельным элементом поверх всего дом дерева. Так сделано в топовых ant.design и material-ui, ну и в других местах тоже, скорее всего

Yevhenii
10.07.2017
17:36:53
есть ли способ в React Native как-то захендлить отображается компонент на дисплее, или нет? к примеру есть такой кейс: нужно как то отмечать уже просмотренные посты когда их скролишь использую FlatList

М
10.07.2017
17:38:02
Попап(вообще все всплывающее) рендерится отдельным элементом поверх всего дом дерева. Так сделано в топовых ant.design и material-ui, ну и в других местах тоже, скорее всего
Ну я верно понимаю, что если попапов несколько, то в каждом случае это отдельный экземпляр одного компонента, но не один и тот же экземпляр

?

Mike
10.07.2017
17:38:05
А как руками сделать без package, можете объяснить?
<div className={s.container}> <div className={s.wrapper} style={{transform: `translateX(${this.state.current * 200}px`}}> {images.map((el, i) => <img src={el} key={i} className={s.image} />)} </div> </div> .container { width: 200px; height: 200px; overflow-x: hidden; } .wrapper{ height: 100%; display: flex; transform: translateX(0); transition: transform 0.5s linear; } .image { width: 200px; height: 200px; }

Влад
10.07.2017
17:43:52
Спасибо Артем

Пойду гуглить в эту степь

Сергей
10.07.2017
17:46:14
не знал что npm юзает раст

https://www.rust-lang.org/en-US/friends.html

Yevhenii
10.07.2017
17:59:18
ты не в том чате)
А есть ссылка на тот чат?

Алексей
10.07.2017
17:59:48
https://t.me/reactnative_ru

shadowjack
10.07.2017
18:10:34
Смотрите как можно: https://www.youtube.com/watch?v=SfWR3dKnFIo

Google
Yevhenii
10.07.2017
18:19:20
Max
10.07.2017
19:04:59
Народ я тут нашел способ как решить проблему биндинга обработчиков в реакте. Небольшое предисловие - забиндить функцию нужно для того чтобы в обработчике получить данные пропсов или состояния иначе в обработчике никак не узнать по какому тудушке кликнули и т.д. Решений тут несколько Вариант 1 - который к сожалению очень часто встречается в различных туториалах - сделать тупой бинд функции или написать arrow-функцию <div onClick={this.onClick.bind(this)}>click</div> или <div onClick={()=>someFunction(this.props)}>click</div> - это дикий антипаттерн потому что на каждый рендер будет создаваться новые функции и поэтому принято использовать классы и биндить обработчики в конструкторе или использовать поля класса class App extens React.Component { onClick=()=>{ .... } render(){ return <div onClick={onClick}></div> } }Но и здесь есть недостатки. Во первых новые функции все равно будут создаваться при каждом создании компонента. Ну а во вторых и самое главное - это нельзя применить к functional stateless components или проще говоря функциями-компонентам. Но выход есть братцы! Никаких больше созданий лишних функций обработчиков которые мало того что замедляют так еще и нагружают сборщик мусора! А главное можно использовать вместе с компонентами функциями. Все что нужно это маленький хелпер который достанет нужный нам компонент а функцию-обработчик мы вообще никак не биндим или замыкаем на контекст. const App = ({todo}) => ( <div onClick={onClick}>{todo.title}</div> ); function onClick(e){ var component = getComponent(e.target); console.log('here is my todo', component.props.todo); } function getComponent(el){ return el[Object.keys(el).filter(k=>k.split('$')[0] === '__reactInternalInstance')[0]]._currentElement._owner._instance }

Kek
10.07.2017
19:07:25
проще забиндить или юзать fat arrow functions

Сергей
10.07.2017
19:07:52
Roman
10.07.2017
19:08:31
Народ я тут нашел способ как решить проблему биндинга обработчиков в реакте. Небольшое предисловие - забиндить функцию нужно для того чтобы в обработчике получить данные пропсов или состояния иначе в обработчике никак не узнать по какому тудушке кликнули и т.д. Решений тут несколько Вариант 1 - который к сожалению очень часто встречается в различных туториалах - сделать тупой бинд функции или написать arrow-функцию <div onClick={this.onClick.bind(this)}>click</div> или <div onClick={()=>someFunction(this.props)}>click</div> - это дикий антипаттерн потому что на каждый рендер будет создаваться новые функции и поэтому принято использовать классы и биндить обработчики в конструкторе или использовать поля класса class App extens React.Component { onClick=()=>{ .... } render(){ return <div onClick={onClick}></div> } }Но и здесь есть недостатки. Во первых новые функции все равно будут создаваться при каждом создании компонента. Ну а во вторых и самое главное - это нельзя применить к functional stateless components или проще говоря функциями-компонентам. Но выход есть братцы! Никаких больше созданий лишних функций обработчиков которые мало того что замедляют так еще и нагружают сборщик мусора! А главное можно использовать вместе с компонентами функциями. Все что нужно это маленький хелпер который достанет нужный нам компонент а функцию-обработчик мы вообще никак не биндим или замыкаем на контекст. const App = ({todo}) => ( <div onClick={onClick}>{todo.title}</div> ); function onClick(e){ var component = getComponent(e.target); console.log('here is my todo', component.props.todo); } function getComponent(el){ return el[Object.keys(el).filter(k=>k.split('$')[0] === '__reactInternalInstance')[0]]._currentElement._owner._instance }
https://daveceddia.com/avoid-bind-when-passing-props/

shadowjack
10.07.2017
19:08:33
Народ я тут нашел способ как решить проблему биндинга обработчиков в реакте. Небольшое предисловие - забиндить функцию нужно для того чтобы в обработчике получить данные пропсов или состояния иначе в обработчике никак не узнать по какому тудушке кликнули и т.д. Решений тут несколько Вариант 1 - который к сожалению очень часто встречается в различных туториалах - сделать тупой бинд функции или написать arrow-функцию <div onClick={this.onClick.bind(this)}>click</div> или <div onClick={()=>someFunction(this.props)}>click</div> - это дикий антипаттерн потому что на каждый рендер будет создаваться новые функции и поэтому принято использовать классы и биндить обработчики в конструкторе или использовать поля класса class App extens React.Component { onClick=()=>{ .... } render(){ return <div onClick={onClick}></div> } }Но и здесь есть недостатки. Во первых новые функции все равно будут создаваться при каждом создании компонента. Ну а во вторых и самое главное - это нельзя применить к functional stateless components или проще говоря функциями-компонентам. Но выход есть братцы! Никаких больше созданий лишних функций обработчиков которые мало того что замедляют так еще и нагружают сборщик мусора! А главное можно использовать вместе с компонентами функциями. Все что нужно это маленький хелпер который достанет нужный нам компонент а функцию-обработчик мы вообще никак не биндим или замыкаем на контекст. const App = ({todo}) => ( <div onClick={onClick}>{todo.title}</div> ); function onClick(e){ var component = getComponent(e.target); console.log('here is my todo', component.props.todo); } function getComponent(el){ return el[Object.keys(el).filter(k=>k.split('$')[0] === '__reactInternalInstance')[0]]._currentElement._owner._instance }
Вот уж точно не нужно обращаться к недокументированным/приватным свойствам.

Roman
10.07.2017
19:09:15
в общем этот вопрос давно разобран

Taras
10.07.2017
19:09:41
А что плохого в arrow func ?

shadowjack
10.07.2017
19:10:19
Пока не будет наглядно продемонстрирована проблема с arrow functions считаю проблему вообще надуманной.

Kek
10.07.2017
19:11:24
?

shadowjack
10.07.2017
19:12:08
Если так хочется, можно сделать статическую переменную, который присвоить пресловутую функцию. Как сделать статическую функцию можно посмотреть в онлайне (подсказка - в JS функция - это тоже объект).

Andrey
10.07.2017
19:12:37
Народ я тут нашел способ как решить проблему биндинга обработчиков в реакте. Небольшое предисловие - забиндить функцию нужно для того чтобы в обработчике получить данные пропсов или состояния иначе в обработчике никак не узнать по какому тудушке кликнули и т.д. Решений тут несколько Вариант 1 - который к сожалению очень часто встречается в различных туториалах - сделать тупой бинд функции или написать arrow-функцию <div onClick={this.onClick.bind(this)}>click</div> или <div onClick={()=>someFunction(this.props)}>click</div> - это дикий антипаттерн потому что на каждый рендер будет создаваться новые функции и поэтому принято использовать классы и биндить обработчики в конструкторе или использовать поля класса class App extens React.Component { onClick=()=>{ .... } render(){ return <div onClick={onClick}></div> } }Но и здесь есть недостатки. Во первых новые функции все равно будут создаваться при каждом создании компонента. Ну а во вторых и самое главное - это нельзя применить к functional stateless components или проще говоря функциями-компонентам. Но выход есть братцы! Никаких больше созданий лишних функций обработчиков которые мало того что замедляют так еще и нагружают сборщик мусора! А главное можно использовать вместе с компонентами функциями. Все что нужно это маленький хелпер который достанет нужный нам компонент а функцию-обработчик мы вообще никак не биндим или замыкаем на контекст. const App = ({todo}) => ( <div onClick={onClick}>{todo.title}</div> ); function onClick(e){ var component = getComponent(e.target); console.log('here is my todo', component.props.todo); } function getComponent(el){ return el[Object.keys(el).filter(k=>k.split('$')[0] === '__reactInternalInstance')[0]]._currentElement._owner._instance }
Жаль, что только внутреннего стейта нормального нет у тебя.

Andrey
10.07.2017
19:16:07
Каждый рендер у тебя создаётся функция
А как с этим бороться? Делать кеш в конструкторе?

shadowjack
10.07.2017
19:16:16
Andrey
10.07.2017
19:17:14
И в чем проблема?
Плодить мемори трафик - тоже не очень хорошая вещь. Особенно у пользователя на машине.

Сергей
10.07.2017
19:17:32
И в чем проблема?
Во первых не сравнить пропсы, во вторых обновление может быть часто

Google
shadowjack
10.07.2017
19:18:19
Я вас умоляю. Покажите юзкейз, где именно создание хендлера создает проблему у пользователя.

Сергей
10.07.2017
19:18:39
А зачем их сравнивать?
Чтобы не рендерить когда это не нужно

Andrey
10.07.2017
19:19:08
Чтобы не рендерить когда это не нужно
Не совсем понял как это реализуется.

Сергей
10.07.2017
19:19:12
Сергей
10.07.2017
19:19:24
shadowjack
10.07.2017
19:19:38
Чтобы не рендерить когда это не нужно
Сделай HOC который будет вызывать рендер только если пропсы поменялись

Andrey
10.07.2017
19:19:43
shouldComponentUpdate
Если пропсы одинаковые, то возвращаем false?

Сергей
10.07.2017
19:20:01
Сделай HOC который будет вызывать рендер только если пропсы поменялись
Так они разные, функция то меняется каждый рендер

shadowjack
10.07.2017
19:20:02
У меня на телефоне это проблема.
Вот именно создание хендлера?

Admin
ERROR: S client not available

Сергей
10.07.2017
19:20:07
Вот именно создание хендлера?
То что люди не умеют оптимизировать

Andrey
10.07.2017
19:20:58
Вот именно создание хендлера?
Постоянное создание лишних функций. Да, херак-херак и в прод сделать очень просто, но сделать хорошо - это не так уж и просто.

shadowjack
10.07.2017
19:21:07
Преждевременная оптимизация - корень всех проблем.

Andrey
10.07.2017
19:21:42
Преждевременная оптимизация - корень всех проблем.
Ну давай везде использовать пузырьковую сортировку.

А то чего мы оптимизируем?

Default
10.07.2017
19:21:55
Преждевременная оптимизация - корень всех проблем.
Ну так если компонент есть, то она уже не преждевременная

shadowjack
10.07.2017
19:22:15
Лол
Не Лол, а Кнут.

Google
Andrey
10.07.2017
19:22:40
Не Лол, а Кнут.
Да хоть пряник. Если ты можешь сделать сразу нормально, то почему не сделать?

shadowjack
10.07.2017
19:23:12
Вот эта поебень наверху - это нормально?

Andrey
10.07.2017
19:23:28
Ты про что? Про свои сообщения?

kana
10.07.2017
19:23:44
Биндить можно и в конструкторе, объявляя нормальные методы, а не эти убогие фэт-функции в телк класса

Но это все равно криво

kana
10.07.2017
19:24:13
Эксобар

Andrey
10.07.2017
19:24:19
Сергей
10.07.2017
19:24:24
Ещё многие не знают что у конструктора компонента есть второй параметр

shadowjack
10.07.2017
19:24:30
Ты про что? Про свои сообщения?
function getComponent(el){ return el[Object.keys(el).filter(k=>k.split('$')[0] === '__reactInternalInstance')[0]]._currentElement._owner._currentElement }

Сергей
10.07.2017
19:24:32
А что делать?
Стрелочные функции

kana
10.07.2017
19:24:39
И бинды убоги, и использовать фэт тоже

Сергей
10.07.2017
19:25:03
И бинды убоги, и использовать фэт тоже
Ну стрелки сами по себе чуть чище выглядят

kana
10.07.2017
19:25:07
Я пересоздаю хэндлеры при смене пропсов

kana
10.07.2017
19:25:26
То есть как в реакт-редаксе

Сергей
10.07.2017
19:25:28
Ещё многие не знают что у конструктора компонента есть второй параметр

Сергей
10.07.2017
19:25:30
писать везде () => {} или заюзать пакет из npm для noop?)

Страница 1667 из 5115