• В чем различие работы стрелочных и обычных функций?

    longclaps
    @longclaps
    Стрелочные - это типа стрелочника, на них всё валить можно.
    Вот и всё различие.
    Ответ написан
    Комментировать
  • Как раскодировать локальный ip?

    DevMan
    @DevMan
    больше похоже на uuid, а не кодированный ip.
    Ответ написан
    Комментировать
  • Почему не работает код?

    @Hanneman
    Потому что надо экранировать
    while($row = mysqli_fetch_assoc($query)) echo "<h1><div class=\"film-card\">".$row['name']."</h1></div><p>".$row['year']."</p><br>";
    Ответ написан
    1 комментарий
  • Как laravel принимает из JS массив?

    Stalker_RED
    @Stalker_RED
    По умолчанию axios действительно отправляет application/json, а не application/x-www-form-urlencoded
    Можете проверить, что именно отправляется в девтулс, например.

    Возможно Laravel автоматичски разворачивает это все в "обычные" поля.
    UPD: Похоже, что так и есть (тыц).
    В "сыром" виде json был (в версии 4.2, например) доступен через Request::json->all(), затем это убрали из документации.

    Возможно в будущем (или уже?) уберут и из кода. Проверять лень.
    Ответ написан
    1 комментарий
  • Почему не работает скприпт?

    rockon404
    @rockon404
    Frontend Developer
    if (ariaExpanded === 'true') {
    Ответ написан
    Комментировать
  • Как из ajax вернуть переменную в код?

    Lynn
    @Lynn
    nginx, js, css
    Никак. Кажется тут каждый пятый вопрос про это в различных вариациях
    Ответ написан
    5 комментариев
  • Как написать асинхронную рекурсивную функцию?

    zendor
    @zendor
    Например использовать async/await:
    async function foo(val = 0) {
      const response = await request(val); //предполагается, что request возвращает promise
      if (response.error) throw new Error('something bad happened');
      //делаем что-то с response
      foo(response.newVal); //вызываем foo с новым val
    }
    Ответ написан
    Комментировать
  • Как удалить компонент?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Правильно рендерить подобные компоненты списком:
    {columns.map(column => <Column key={column.name} data={column} />)}

    А манипуляции по добавлению и удалению производить с данными.
    Ответ написан
    1 комментарий
  • Laravel realtime data?

    AmdY
    @AmdY
    PHP и прочие вебштучки
    В сокет вы можете посылать просто событие с плейлодом {action: "UpdatePrice", payload: {ids: [1, 2,3]}}
    А на основании этого события система будет знать что надо сходить на сервер за новыми ценами и делать это обычным ajaj запросом, выбирая все данные или только обновлённые.
    Ответ написан
    4 комментария
  • Как выдернуть _id из структуры список объектов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    msg.map(e=>e.item._id)
    Ответ написан
    Комментировать
  • Как понять почему не работает приложение развернутое на heroku?

    @Alex_bliznec Автор вопроса
    В итоге, благодаря хорошим людям Александр Вульф и hzzzzl удалось решить проблему. Для этого потребовалось:
    1. Достать логи приложения, через терминал при помощи команды heroku logs --app "название вашего приложения на heroku" либо на самом heroku 5cd92f76f24fc732943810.png Важная деталь, если работаете в терминале, устанавливать нужно именно пакет heroku (npm i heroku), npm i heroku-cli, насколько я понял устарел.
    2. Логов много, вставляйте их в pastebin, потом уже сюда
    3. Находим ошибку. В моем случае ошибка была связана с тем, что в mongoose модели было поле {email: {required: true}}, соответственно email не был передан, что и повлекло за собой ошибку.
    4. Блоки кода связанные с работой с БД оборачиваем в try/catch, дабы на раннем этапе отловить ошибку.
    Ответ написан
    Комментировать
  • Как кликнуть на расширение chrome с помощью javascript?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Передавать из тела самого сайта напрямую в расширение каких либо действий нельзя. Вы можете попробовать извратиться путём добавления в глобальную область видимости какой нибудь флаг при клике на кнопку. Например:
    window.isVisibleMyPlugin: true
    И уже его считывать в самом расширении и делать какие либо действия
    Ответ написан
    Комментировать
  • Как поместить результат инкремента в массив?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const arr = [];
    for (let i = 0; i < 10; arr[i] = ++i) ;

    Или, без счётчика:

    const arr = [];
    while (arr.push(arr.length + 1) < 10) ;

    Или, без цикла в явном виде:

    const arr = Array.from({ length: 10 }, (n, i) => -~i);
    Ответ написан
    Комментировать
  • Как проверить наличие элемента в многомерном массиве?

    0xD34F
    @0xD34F Куратор тега JavaScript
    А какая у вас может быть вложенность и количество элементов? Если только так, как вы показали - тогда вместо orderlist проверяйте orderlist[0][0]. Если заранее не знаете - сделайте метод, который проверит всё:

    const inArray = (arr, val) =>
      arr.some(n => Array.isArray(n) ? inArray(n, val) : Object.is(n, val));
    
    // или
    
    const inArray = (arr, val) =>
      arr.flat(Infinity).includes(val);
    Ответ написан
    2 комментария
  • Оценка своего уровня. Как улучшить код?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Используйте const вместо let для определения переменных которые не переопределяются в коде. Это помогает снизить когнитивную нагрузку с человека читающего код и негласный стандарт в React разработке.

    2. Такие вещи как globalStyles и конфигурацию store лучше вынести в отдельные файлы. Они могут со временем хорошо разрастись.
    По поводу globalStyles, вы вообще можете вынести их в отдельный css файл.

    3. Вместо:
    {
      isModal
      ? <Route path="/auth" component={AuthPopup} />
      : null
    }

    лучше:
    {isModal && <Route path="/auth" component={AuthPopup} />}


    4. Вместо:
    function mapDispatchToProps(dispatch) {
        return {
            autoLogin: () => dispatch(autoLogin()),
            getBrowser: () => dispatch(getBrowser()),
            getMedia: () => dispatch(getMedia())
        }
    }


    лучше:
    const mapDispatchToProps = {
      autoLogin,
      getBrowser,
      getMedia,
    };


    5. Точки с запятыми в конце то есть, то нет. Определитесь и приведите код к одному виду.

    6.
    & label {}
    & input {}
    & span {}

    Это не очень хороший подход. Во-первых ваши стили не изолированные, что может приводить к неожиданным результатам. Во-вторых у вас очень много дублирования стилей. Определите Input и Label как базовые компоненты и используйте в разных местах, то же с остальным если есть.

    7. Почему папка со страницами называется Containers? Дань бойлерплейтам?

    8. Использование trailing comma является хорошей практикой.

    9.
    import {combineReducers} from 'redux';
    import photoReducer from './photoReducer';
    import authReducer from './authReducer';
    import globalReducer from './globalReducer';
    
    export default combineReducers({
        photoReducer, authReducer, globalReducer
    })


    Все таки приятней работать с хранилищем в котором ключи не имеют в названии слова reducer:
    import {combineReducers} from 'redux';
    import photo from './photoReducer';
    import auth from './authReducer';
    import global from './globalReducer';
    
    export default combineReducers({
      photo, 
      auth,
      global,
    });


    10. Забудьте вообще, что в языке есть возможность использовать вложенный тернарный оператор:
    return e === 'invalid-email' ? 'Неверно указан e-mail'
        : e === 'user-not-found' ? 'Указанный e-mail на найден'
        : e === 'wrong-password' ? 'Неверный пароль'
        : e === 'email-already-in-use' ? 'Указанный e-mail уже используется'
        : e === 'network-request-failed' ? 'Нет подключения к интернету'
        : e === 'operation-not-allowed' ? 'Произошла ошибка, попробуйте снова'
        : e === 'popup-closed-by-user' ? 'Окно авторизации закрыто пользователем'
        : e === 'account-exists-with-different-credential' ? 'Аккаунт уже существует с другими данными, используйте другой способ авторизации'
        : e

    Это одна из самых худших практик в JavaScript разработке. Тут лучше подойдет конструкция switch case

    11. Константы actionTypes лучше вынести в папку constants и разложить по разным файлам, иначе со временем у вас там будет свалка.

    12. Вместо:
    import {SET_ACTIVE, CHANGE_VALUE, SET_DEFAULT, UPLOAD, UPDATE_IMAGE, SET_IMAGE_ERROR, SET_LIKE, SET_COMMENT, ADD_ARTICLE_SUCCESS, FETCH_ARTICLES_START, FETCH_ARTICLES_SUCCESS, FETCH_ARTICLES_ERROR} from '../actions/actionTypes';

    Лучше:
    import {
      SET_ACTIVE,
      CHANGE_VALUE,
      SET_DEFAULT, UPLOAD,  
      UPDATE_IMAGE,
      SET_IMAGE_ERROR,
      SET_LIKE,
      SET_COMMENT,
      ADD_ARTICLE_SUCCESS,
      FETCH_ARTICLES_START,
      FETCH_ARTICLES_SUCCESS,
      FETCH_ARTICLES_ERROR,
    } from '../actions/actionTypes';


    13. Попробуйте внедрить библиотеку reselect. И для получения значения из store вместо записи вида:
    function mapStateToProps(state) {
        return {
            browser: state.globalReducer.browser
        }
    }


    использовать селектор:
    const mapStateToProps = state => ({
      browser: browserSelector(state),
    });
    Ответ написан
    12 комментариев
  • Как можно blobImage добавить в input file?

    Stalker_RED
    @Stalker_RED
    Никак. Джваскриптом input file можно прочитать или обнулить, но в него нельзя ничего записать.

    Если это вам нужно для отправки на сервер - можно использовать FormData
    Ответ написан
    Комментировать
  • Как описать функцию смены картинки слайдера в данном случае?

    hzzzzl
    @hzzzzl
    сохраняешь в массиве src всех картинок
    images = ['a','b','c','d']
    // "https://www.stihi.ru/pics/2005/12/19-543.jpg"  , и так далее

    и сохраняешь индекс текущего слайда
    current = 0
    // начинаем с первого, то есть "нулевого" элемента в массиве


    и тогда

    aL.onclick=function(){
      alert("Arrow left") //в этих фукнциях и есть вопрос
      current = current - 1 < 0 ? images.length - 1 : current - 1
      // меняем индекс текущего и перерисовываем в слайдере картинку на images[current]
    }
    
    aR.onclick=function(){
      alert("Arrow right") //в этих фукнциях и есть вопрос
      current = current + 1 > images.length - 1 ? 0 : current +1
      // меняем индекс текущего и перерисовываем в слайдере картинку на images[current]
    }
    Ответ написан
    8 комментариев
  • Как сделать десктопное приложение на JS с вызовом кода на php?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Ну раз там форма с парой полей и кнопок, почему бы не сделать нормальное десктопное приложение-то? Например WPF/WinForms. А так, можно использовать NWJS.
    Ответ написан
    Комментировать