• Странное поведение React. Состояние дочерних элементов то само прокидывается, то нет. Почему?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Вам бы основы JavaScript подтянуть.
    Во-первых вы биндите контекст хандлера на AppField в конструкторе:
    constructor(props) {
      super(props);
      this.state = props.params;
      this.onFieldChange = this.onFieldChange.bind(this); // тут
    }

    Во-вторых, вы определяте переменную self, ссылающуюся на this и она ни делает ровным счетом ничего, так как вы передаете функцию в колбек обработчика события:
    renderSingleValue(data = {}) {
      ...
      let self = this;  // бессмысленно
    
      return (
        <input type="text"
          ...
          onChange={self.onFieldChange} 
          ...
        />
      );
    }

    Даже если бы функция не была забинжена на AppField, у вас бы все-равно ничего не получилось.

    В-третих, значение инпутов лучше хранить в родителе, а не в самих инпутах.

    Трюк с self работает в отложенных вызовах:
    constructor() {
      const self = this;
    
      node.addEventListener('click', function() {
        self.handleEvent();  // сработает, так как функция вызывается на self
      });
    }

    и не сработает при передаче функции:
    constructor() {
      const self = this;
    
      node.addEventListener('click', self.handleEvent);  // не сработает, функция передается
                                                         // в колбек обработчика события
    }                                                    // и не будет вызываться на self


    Пример как можно сделать контролируемую форму с состоянием инпутов в родителе:
    class Example extends Component {
      state = {
        inputValue: '',
      };
    
      handleChange = e => {  // arrow class field function биндится на контекст экземпляра
        const { name, value } = e.target;
        
        this.setState({
          [name]: value,
        });
      };
    
      render() {
        const { inputValue } = this.state;
    
        return (
          <Wrapper>
            <input
              name="inputValue"
              value={inputValue}
              onChange={this.handleChange}
            />
            ...
          </Wrapper>
        );
      }
    }

    Аналогичное решение без использования class field function:
    class Example extends Component {
      constructor(props) {
        super(props);
        this.state = {
          inputValue: '',
        };
        this.handleChange = this.handleChange.bind(this);
      }
      
    
      handleChange(e) {
        const { name, value } = e.target;
        
        this.setState({
          [name]: value,
        });
      }
    
      render() {
        const { inputValue } = this.state;
    
        return (
          <Wrapper>
            <input
              name="inputValue"
              value={inputValue}
              onChange={this.handleChange}
            />
            ...
          </Wrapper>
        );
      }
    }


    Если делаете совой компонент вроде кастомного select, то вы можете в его реализации по изменению сами вызывать хандлер onChange, передавая туда фейковое событие с нужными вам ключами:
    handleChange = value => {
      const { name, onChange } = this.props;
      const fakeEvent = { target: { name, value } };
    
      onChange(fakeEvent);
    };
    Ответ написан
    Комментировать
  • Какой принцип работы нескольких операторов ->?

    kayart
    @kayart
    Freelancer, Web-Developer
    Это называется chaining - цепочка вызовов функций. Благодаря тому, что функция возвращает объект (чаще всего this), можно вызывать такие функции подряд, не прописывая их отдельно.

    Достаточно поискать в гугле запросы в стиле "PHP Chaining"
    В качестве примера - вот
    Ответ написан
    Комментировать
  • Как идет переход с "классики" на DevOPS?

    Singaporian
    @Singaporian
    Нет никаких годных материалов. Точнее они годные только для опытных DevOps. Потому что это культура подхода, а не инструментарий.
    Переход на DevOps делается в три этапа:
    1) Сначала полностью все автоматизируется. По поводу доставки кода вопросы врядли возникнут - Jenkins и Maven известны даже детям. Ну не обязательно они. У каждого языка свои инструменты. gradle, grunt, waf... Но автоматиризровать надо все, включая деплой SQL (LiquidBase, dbMaintain, sqitch и т.д.). Эта часть освещена очень хорошо в интернетах.
    2) Затем убираются все боттл-нэки в работе админов и программистов. Например внедряется Green/Blue-деплоймент. В точках деплоя собственного ПО средства провиженинга (puppet/ansible/chef) заменяются на средства деплоймента (uDeploy например). Устанавливается мониторинг и логирование. На все это тоже есть свои инструменты (Sensu например).
    3) Начинается работа с людьми - вовлечение программистов в ответственность за результат на стороне Ops и вовлечение сисадминов(operations) в результат на стороне Dev (подгон под FHS и все такое). Ключевой момент в том, что людям придется понять, что их ответственность приходит эхом оттуда, где они своими руками не трогали (для этого даже автоматически создают новые энвайронменты всякими докерами и вагрантами). Закоммитил кривой код в IDE, не учел зависимость в пропертях, поправил конфиги не для всех энвайронментов - будешь отвечать и за статический анализ кода и за проваленные интеграционные тесты и за неудачный деплоймент. В обратную сторону тоже самое. Тогда люди начнут действовать по стандартам и настанет искомый результат.

    Ну и само собой надо найти сильного релиз-инженера. Потому что DevOps - это не "построил и ушел". Кто-то должен все время смотреть за новыми организационными проблемами и чтобы транк не попал на UAT, например, а на SIT ушел тот же тэгированный код, которому на DEV провели smoke-тесты, а не обновленный парой вредных коммитов, набежавших за время смоука.

    Сначала скажите, как звучит конечная задача и что из этого уже есть и чего нет. Может чего детальнее посоветую.
    Ответ написан
    6 комментариев
  • Кто может посоветовать веб-приложение для организации работы команды фрилансеров?

    dizballanze
    @dizballanze
    Software developer at Yandex
    redmine видимо
    Ответ написан
    Комментировать
  • Существует ли Unix для "разработок"?

    @AVKor
    Существует ли Unix для «разработак»?

    Кто такой «разработак»?

    Если же вопрос про разработки, то любой.

    Например, Debian: огромная база пакетов, в том числе для разработок на любые случаи и вкус.

    Ставится куда угодно, на флешку, в том числе.
    Ответ написан
    Комментировать
  • Тестирование API и тестовые данные - как быть?

    1. Запросить реализацию delete
    2. Запросить реплику боевой системы для тестирования с возможностью полного обнуления пользовательских данных по запросу
    Ответ написан
    Комментировать
  • Сколько времени требуется на типовые операции?

    bavaria
    @bavaria
    Студент, Python, Ruby
    MpdRyrfheRA.jpg
    Ответ написан
    Комментировать
  • Как настроить роуты в REST-приложении на Yii2?

    @romankolohanin
    'urlManager' => [
                'enablePrettyUrl' => true,
                'enableStrictParsing' => false,
                'showScriptName' => false,
                'rules' => [
    
                    [   'class'      => 'yii\rest\UrlRule',
                        'controller' => ['tag' => 'tag'],
                        'prefix'     => 'api/basicapp/<version:\w+>/json'
                    ]
                ]
          ]
    Ответ написан
    4 комментария
  • Как исправить путь у картинки в Битриксе?

    mr_T
    @mr_T
    Web-разработчик
    У тебя какой-то скрипт лежит скорее всего в файле /images/index.php, который, судя по запросу, ресайзит картинку и выводит ее. Во-первых, нужно понять, стоит ли вообще что-то менять и если стоит, то либо в result_modifier'е компонента делать ресайз картинки и в arResult писать путь до нее, либо, если ресайз не нужен, просто вставлять прямой путь (например, через CFile::GetPath).
    Ответ написан
    1 комментарий
  • Как отрендерить html на сервере?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Менее ужасно будет просто менять в тексте буквы на мешанину, а на клиенте накладывать размытие. И да, восстановить назад размытый текст - дело не хитрое.
    Ответ написан
    4 комментария
  • 3DS Max для моделирования ювелирных изделий?

    @skald2828
    Обратите внимание на Rhinoceros
    Ответ написан
    Комментировать
  • Современная cms для интернет магазина (2014-2015) ?

    @SRoman
    Битрикс - работаю с ним давно, сложились хорошие впечатления. Многие говорят что он из каменного века, код устаревший и так далее. Да - код местами просто атас, но его сохраняют для поддержки старых версий, а так ядро переписывается на новый движок D7, который разработан на ООП. В коробке есть интернет магазин, скидки. В новой версии 15 (выйдет в три этапа: начало, середина и конец ноября) будет много плюшек для инет магазов. Разработчиков по данной системе много, в маркетплейсе много модулей как платных, так и бесплатных.
    Из важных плюсов лично для меня - это безопасность, за все время работы ломали только совсем "лохматые" версии, сайты которые в адекватные сроки обновляю всегда чистые (нет вирусов и другой нечисти).
    Ну и стоит отметить что таки инет магазы как Эльдорадо, Связной работают на Битриксе.
    Ответ написан
    4 комментария
  • На чем писать веб-сервис?

    miraage
    @miraage
    Старый прогер
    Ответ вполне очевидный.
    На чем качественно сделаете, что хорошо знаете и сможете поддерживать/расширять.
    Ответ написан
    2 комментария
  • Как запросить ввод email при входе через ВК?

    vasilyev
    @vasilyev
    php, 1c-bitrix
    При регистрации пользователя через соцсети срабатывает событие OnAfterSocServUserAdd. В его обработчике можно либо положить пользователя в нужную группу, либо как-то по-другому пометить, что человек из ВК и без емайла.

    Потом при логине смотреть, лежит ли человек в нужной нам группе или нет и в случае, если лежит, то направлять его на страничку с вводом имейла.

    Костылесипед, конечно.
    Ответ написан
    3 комментария
  • Какие есть отзывы у PhpStorm?

    Sander_Li
    @Sander_Li
    Backend developer
    На мой взгляд лучшая на сегодняшний день. Работал в эклипсе, аптане и нетбинс. Отличается стабильностью работы, более симпатичным интерфейсом и скоростью работы.
    ОС - OS X Maverics
    Ответ написан
    Комментировать
  • Парсинг xlsx больших файлов

    @Ualde
    set_include_path(get_include_path() . PATH_SEPARATOR . 'ExcelRes/');
    include 'PHPExcel/IOFactory.php';
    
    $inputFileType = 'Excel5'; 
    $inputFileName = 'import.xls'; 
    
    class chunkReadFilter implements PHPExcel_Reader_IReadFilter {
        private $_startRow = 0;
        private $_endRow = 0;
    
        public function setRows($startRow)  {
            $this->_startRow    = $startRow; 
        }
    
        public function readCell($column, $row, $worksheetName = '') { 
            if (($row == 1) || ($row >= $this->_startRow)) return true;
            return false;
        }
    }
    
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    
    $chunkFilter = new chunkReadFilter();
    
    $objReader->setReadFilter($chunkFilter);
    
    $chunkFilter->setRows(22000); 
    $objPHPExcel = $objReader->load($inputFileName);
    
    echo $objPHPExcel->getActiveSheet()->getCell('K22000')->getValue();
    Ответ написан
    3 комментария
  • Может ли сайт с функционалом, как hh.ru или rabota.ru, работать на cms 1С-Битрикс: управление сайтом?

    @MHumster
    Может. Я лично писал сервисы с миллионами записей и аналитикой на 1С-Битрикс, причем крутилось все это на бюджетных VPS.
    Важно понимать что такое данные и как с ними работать. Использовать в Битриксе то, что удобно и экономит время и думать своей головой там, где Битрикс создаст такую нагрузку, что впору суперкомпьютер арендовать.
    Прямые руки + знание предметной области и все будет прекрасно работать.
    Уверен все вышесказанное применимо к любому фреймворку
    Ответ написан
    6 комментариев
  • Как подключить adblock к своему сайту (не браузеру)?

    savostin
    @savostin
    Еще один программист
    недобросовестного бесплатного

    ну-ну
    Ответ написан
    1 комментарий
  • Правило для urlMаnager в Yii при вложенном модуле?

    skarah
    @skarah Автор вопроса
    Все заработало, добавил в конфиге в модулях вместо 'admin' 'admin'=>array('modules'=>array('news')), в итоге получилось
    'modules'=>array(
    	        'admin'=>array('modules'=>array('news')));


    и все заработало.
    Ответ написан
    Комментировать