• Как распознать ошибку?

    @webe Автор вопроса
    TBulldozer не распознает, там нет такого правила.
  • Как быть с относительными путями на картинки?

    @webe Автор вопроса
    Сергей Горностаев Просто мне дали шаблонь, там все пути такого вида, править всю верстку и JS статику не очень хочется(
  • Как сделать календарь?

    @webe Автор вопроса
    Alexander Pushkarev т.е. мы всегда формируем массив из 42 ячеек , меня просто смущает февраль 2010 года. 5be82eb26d169922699928.jpeg

    Как по мне это не очнеь красиво, но паходу других вариантво нет, если делать динамическое кол-во строк, то календарь будет "скакать"
  • Как сделать календарь?

    @webe Автор вопроса
    Сёмка Гавриленко нужен именно самопис, ибо там не стандартный функционал, но не получается подобрать оптимальный алгорит отображение месяца
  • Почему верстка мерцает при прокрутке?

    @webe Автор вопроса
    Александр, Последняя версия хрома, нужно сначала через колесико долистать до низа, а потом медленно верстать вверх колесиком и ближе к верху начнутся странные рендеры рамки

    Под лагом я имел ввиду кривой рендеринг border-bottom, который виден на скрине
  • Как получать данные без действий?

    @webe Автор вопроса
    uiworks, с сокетаим все просто, просто у нас бекендерво не просто так заставить юзать новое что-то)
  • Как получать данные без действий?

    @webe Автор вопроса
    Роман Александрович fа эта штука будет работать с Fetch ?
  • Для чего делать такие размеры?

    @webe Автор вопроса
    Алексей Николаев теперь понял, спасибо)
  • Как перенести часть коммитов из мастера в feature?

    @webe Автор вопроса
    SagePtr а откатить вот так? git branch -f master 21a783 (эту команду из фичи выполнить, где 21a783
    будет как раз тот коммист до которого откатываем в мастере)
  • Angular 4+. Можно ли сказать что поддержка проектов с ним в среднем проще чем React?

    @webe
    bormor Если рассматривать крупные проекта, то ад будет всегда и на всех проектах.
  • Что делать с данными?

    @webe Автор вопроса
    Антон Спирин, спасибо, теперь понял, буду пробовать такую архитектуру :)
  • Что делать с данными?

    @webe Автор вопроса
    Антон Спирин, У меня есть чужой компонент react-day-picker
    там есть календарь, после того, как тыкаю на число в календаре вызывается мой хендлер для этого нужно привязать onDayClick к моему хендлеру.
    что бы выделить день в календаре можно поменять selectedDay

    <DayPicker
                onDayClick={this.handleDayClick}
                selectedDays={this.state.selectedDay}
     />


    Тут проблемм нет (еше я его модернезировал и обернул в несколько HOC, один из них react-onclickoutside)
    Но пользователю лень искать определенные даты в календаре, он хочет сразу выбрать сегодняшний день или вчерашний, что бы пользователь не ковырялся в календаре я создал две кнопочки.
    Кнопки "Сегодня" и "Вчера" эти кнопки меняют selectedDay на соответствующие значения.
    по сути у меня уже 3 хендрера, так же у меня есть state active , он показывает какая кнопка нажата ()нажата ли кнопка сегодня, нажата ли кнопка вчера или мы надали по календарю, это нужно для удобной ориентации и понимания того что сейчас нажато.
    Послевсей этой компоновки получилось много кода и я создал под это отдельную папку и назвал ее MyMegaPicker

    мой зеленый компонент (MyMegaPicker)сейчас выглядит так, это хендлеры:

    ...
     
     handleClickOutside = () => {
        this.setState({ isOpen: false });
    	//скрываем календарь если кликнули за его пределы
      };
    
      handleClickPicker = () => {
        this.setState(prevState => ({
          isOpen: !prevState.isOpen,
        }));
      };
    
      handleDayClick = day => {
     //этот хендлер вызывает react-day-picker
        this.setState({ selectedDay: day, active: 'custom' });
      };
    
      handleClickToday = () => {
    //этот хендлер вызывает моя кнопка, но после смены selectedDay срабатывает render у  react-day-picker
        this.setState({ selectedDay: new Date(), active: 'today' });
      };
    
      handleClickYesterday = () => {
        const date = moment().subtract(1, 'day');
        this.setState({ selectedDay: new Date(date), active: 'yesterday' });
    //этот хендлер вызывает моя кнопка, но после смены selectedDay срабатывает render у  react-day-picker
      };
      
      ...


    Если с инпутами и текстовыми полями я понял как сделать, т.е. я просто выношу все в родителя как вы сказали и мы избавимся от пробросов (Lifting State Up)
    Но как быть с этой датой я не могу понять, я не могу ее вынести так же как тестовое поле, потому что мой компонент с датой сложный и его необходимо выносить в отдельный класс.

    тут нужно сделать проброс вверх, но не знаю где именно..

    1) работаем с selectedDay как работали но еще дублируем его в родительском компоненте через Lifting State Up (меняем стайт в 2 местах)
    2) сразу храним selectedDay в Lifting State Up, т.е. кусок стейта будет в родители кусок в нашем

    5b4a45dc94f5c812741769.jpeg
  • Что делать с данными?

    @webe Автор вопроса
    только минус в том, что кода будет много, около 200-300 строк...
    это еще без стилей от SC
  • Что делать с данными?

    @webe Автор вопроса
    Было бы проще если бы я вынес как вы сказали, но сделал 7-10 хендлеров.

    например хендлеры будут выглядеть так:
    handleClickToday = () => {
        const date = moment().format('DD.MM.YYYY');
        this.setState({ active: 'today', date });
      };
    
      handleClickYesterday = () => {
        const date = moment()
          .subtract(1, 'day')
          .format('DD.MM.YYYY');
        this.setState({ active: 'yesterday', date });
      };
    
    
      handleClickMonth = () => {
        const date = moment()
          .subtract(1, 'month') //пример
          .format('DD.MM.YYYY');
        this.setState({ active: 'month', date });
      };
    и еще около 5-7 будет
    
    
    а компоненты выглядят так: 
    
    
    <WrapperBtns>
     <StyledBtnPicker  onClick={this.handleClickToday} type="now">Сегодня</BtnPicker >
     <StyledBtnPicker  onClick={this.handleClickYesterday } type="yesterday">Вчера</BtnPicker >
     ....
     <StyledBtnPicker  onClick={this.handleClickMonth} type="month">Месяц</BtnPicker >
    </WrapperBtns>


    так вроде лучше?
  • Что делать с данными?

    @webe Автор вопроса
    Антон Спирин как я понял весь смысл в том, что бы навешать onClick/ onChange сразу в красном компоненте непосредственно на родной компонент.
    и использовать только один хендл.
    У меня просто не голые импуты, вокруг инпута есть различная логика и кнопочки и обертки


    вот так?
    И получилась путаница в handleChangeDate , теперь мы принимаем не просто флаг но и данные.
    Плюс к этому мы создаем стрелочную функцию в onClick что не есть хорошо, но без этого н епрокинуть два параметра в наш хендл.
    Теперь нам нужно прокидывать и флаг (называется type) и данные (называется receivedData)

    state = {
    	data:"01.01.2018",
    	checkboxes:[1,2,7,25],
    	selectedCategory:76,
    	title:"hello",
    	message:"Hi!"
    	}; // примерно вот так будет меняться стейт красного компонента
     
     
     handleChangeDate = (type, receivedData) => {
    	if(type==='now')  	this.setState({date : Moment().now()})
    	if(type==='yesterday') this.setState({date : Moment().yesterday()})
    	if(type==='week') this.setState({date : Moment().week()})
    	if(type==='month') this.setState({date : Moment().month()})
    	if(type==='custom') this.setState({date : receivedData})
    	if(type==='reset') this.setState({date : null})
    		
    	if(type==='checkbox')  {
    		this.setState(prevState => ({ 
                checkboxes: [...prevState.checkboxes,receivedData]
            }));
    	} 	
     }
     
    
     <Form>
      <DatePicker initial={this.state.date} handleChangeDate = {this.handleChangeDate} />  
    <WrapperBtns>
     <StyledBtnPicker  onClick={()=>this.handleChangeDate('now')} type="now">Сегодня</BtnPicker >
     <StyledBtnPicker  onClick={()=>this.handleChangeDate('yesterday')} type="yesterday">Вчера</BtnPicker >
     <StyledBtnPicker  onClick={()=>this.handleChangeDate('week')} type="week">Неделя</BtnPicker >
     <StyledBtnPicker  onClick={()=>this.handleChangeDate('month')} type="month">Месяц</BtnPicker >
    </WrapperBtns>
    <WrapperReset>
     <IconPicker>
     <BtnPicker type="reset" onClick={()=>this.handleChangeDate('reset')}>Сбросить</BtnPicker >
    </WrapperReset>
    <CheckBoxes>
    {store.getCategiries().map((item)=><Checkbox onChange ={this.handleChangeDate('checkbox',item.id)}/>)}
    </CheckBoxes>
    ....
    </Form>

  • Как сейчас синхронизировать react router v4 с redux?

    @webe Автор вопроса
    codefln а что за history ?
    Я в инете глянул там был такой пример:

    import createHistory from 'history/createBrowserHistory'
    const history = createHistory()

    примерно так?
  • Как начать в react-native с WINDOWS?

    @webe Автор вопроса
    Роман Александрович, вот еще такую шутку нашел, как я понял это разработка в облаке...
    expo.io
  • Как быть с роутингом и категориями?

    @webe Автор вопроса
    Антон Спирин т.е. отправляем вот так: 1-komedii
    а на сервере мы уже делаем запрос в бд не по id а по SLUG?
    т.е. select * from films where slug = '1-komedii'


    Без префикса не получится
    У меня просто категория комедии могут быть в ФИЛЬМЫ, а могут быть в МУЛЬТИКИ
    две разные сущности, т.е. ID нужен в SLUG
  • Как обойти CORS?

    @webe Автор вопроса
    Никита Баев, просто я видел как-то у 1 человека сделано было без CORS он как-то прокинул через NGINX там были какие-то команды типа proxy pass , но не силен в сисадминстве :(

    Либо он поднимал прокси на сервера а в AJAX подкидывла прокси каким-то способом...
  • Как подвинуть блок?

    @webe Автор вопроса
    profesor08, ладно спасибо, просто я думал можно как-то без оберкти)
    Сделал с float:left,
    Думал что есть какая-то хитрость у флексов, но оказалось что нету.

    Просто есть менюшка, и что-то типа конфигуратора меню куда передается каждому элементу меню LEFT или RIGHT и она двигается . если сделать через обертку, то не удет гибкости, мы зарранее не знаем что оборачивать.