
М
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

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

М
10.07.2017
17:33:33
А в чем проблема?

Влад
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
?

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:41:51

Влад
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

М
10.07.2017
18:09:15

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


shadowjack
10.07.2017
19:08:33


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

Сергей
10.07.2017
19:09:26

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


Сергей
10.07.2017
19:13:54

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

Andrey
10.07.2017
19:18:14

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

Andrey
10.07.2017
19:19:23

Сергей
10.07.2017
19:19:24

shadowjack
10.07.2017
19:19:38

Andrey
10.07.2017
19:19:43

Сергей
10.07.2017
19:20:01

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
Преждевременная оптимизация - корень всех проблем.

Сергей
10.07.2017
19:21:19

Andrey
10.07.2017
19:21:42
А то чего мы оптимизируем?

Default
10.07.2017
19:21:55

shadowjack
10.07.2017
19:22:15

Google

Сергей
10.07.2017
19:22:31

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

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

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

Сергей
10.07.2017
19:23:43

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

Сергей
10.07.2017
19:24:00

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
И бинды убоги, и использовать фэт тоже

Andrey
10.07.2017
19:24:46

Сергей
10.07.2017
19:25:03

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

Сергей
10.07.2017
19:25:11

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

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

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