Задать вопрос
  • React как рендерить несколько элементов в одном JSX элементе?

    Aetae
    @Aetae
    Тлен
    AppTheme.js:
    import AppThemeProvider from './AppThemeProvider.jsx';
    import AppThemeButton from './AppThemeButton.jsx';
    
    export default {
      Button: AppThemeButton,
      Provider: AppThemeProvider
    }

    Да, это обычный javascript, реакт тут не при чём.
    Ответ написан
  • Как добавить ES 2020 во Vue 2?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Набросок чуть менее хакерского способа, чем предложенный выше:
    vue.config.js

    const { transformSync } = require("@babel/core");
    
    const fs = require('fs');
    
    const babelTransform = {
      transformCode: (_, code) => transformSync(`(function(){${code}}())`, {
        filename: "",
        ast: false,
        retainLines: true,
        babelrc: true,
        compact: true,
        minified: true
      }).code.replace(/;$/,'')
    };
    
    const addBabelTransform = (options) => {
      const { compilerOptions } = options;
      const modules = compilerOptions && compilerOptions.modules ? compilerOptions.modules.concat(babelTransform) : [babelTransform];
      return {
        ...options,
        compilerOptions: {
          ...compilerOptions,
          modules
        }
      }
    }
    
    
    module.exports = {
      chainWebpack: config => {
        config.module
          .rule('vue')
          .use('vue-loader')
          .tap(addBabelTransform);
      },
    }

    До ума я его не довёл, т.к. всё равно слишком "грязно", а надобности то особо и нет: если вам надо в компоненте погружаться глубоко в объект в поисках того, чего там может не быть - это явный признак того что текущий компонент слишком разжирел и его срочно надо резать на меньшие кусочки.
    Ответ написан
    Комментировать
  • Как исправить ошибку typescript?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    ...data[String(item.id)]?
    У тя самого важного куска кода не хватает:
    type 'xhr>'.
    , я так понимаю, там на самом деле Record<что-то, что-то xhr>.
    И именно там кроется точный ответ на твой вопрос.)
    Ответ написан
    Комментировать
  • Как удалить свойство объекта?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Ну наверное оно не configurable.
    Пересоздайте объект:
    const {password, ...rest} = user;
    console.log(password);
    console.log(rest);
    return rest;
    Ответ написан
    6 комментариев
  • Переход по якорю перекрывает sticky элемент?

    Aetae
    @Aetae
    Тлен
    Если юзается стандартный переход - только всякими хаками, типа увеличения элемента вверх на размер fixed плашки, визуально оставляя его как есть.
    Ответ написан
    2 комментария
  • Насколько точной должна быть вёрстка по макету?

    Aetae
    @Aetae
    Тлен
    Как скажут. В среднем - соблюдать все размерности надо, с логичной поправкой на адаптив.
    Ответ написан
    Комментировать
  • Почему в данном коде this undefined?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Утрировано: this в функции это то, что идёт перед точкой при её вызове:
    что-то.функция() // this внутри функции - "что-то"
    В твоём коде я не вижу точек.)
    Ответ написан
    5 комментариев
  • Ошибка при регистрации компонента Failed to resolve component: Как исправить?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    components: { Vmanufacturers } - это сокращённая запись для:
    components: { "Vmanufacturers": Vmanufacturers }
    Левая сторона - это то, как будет называться компонент в шаблоне. Vue также дополнительно преобразует имена из camelCase в kebab-case. Т.о., при вашем наименовании компонента, внутри шаблона надо использовать напрямую <Vmanufacturers ...>, либо версию преобразованную по правилам camel-kebab, т.е. <vmanufacturers ...> (без тире, заметьте), либо таки переименовать по правилам: components: { "vManufacturers": Vmanufacturers }, либо, наконец, сразу импортировать как надо:
    import vManufacturers from "@/components/information/v-manufacturers";
    
    // ...
    
    components: {
      vManufacturers
    }
    Ответ написан
    1 комментарий
  • Как импортировать типы из библиотеки vue?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Увы, vue-cli из коробки это не умеет. И когда последний раз смотрел в эту сторону(пару лет назад) - плагинов для этого тоже не было. 2 года - это долго, так что рекомендую погуглить.)

    Но тут ещё одна загвоздка, о которой тоже надо заранее позаботиться: тип импортированных файлов .vue по умолчанию просто Vue, без конкретизации свойств и прочего. Чтобы были нормальные ts-типы их надо отдельно генерировать. Для этого есть либа vuedts, она не идеальна, но свою работу делает.
    Если не найдёшь готовых решений - можешь чтот-то своё с этой либой намутить.)
    Ответ написан
    Комментировать
  • Во всех вакансиях по Front-End требования TypeScript?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    В первую очередь: автокомплит(когда у тя на выбор ide предлагает пару конкретно нужных вариантов, а не список из 100500 предположительно подходящих - это каеф), во вторую: отлов тупых ошибок на ранней стадии: ты просто не сможешь вызвать функцию с неверным параметром, будь то опечатка или логическая ошибка. Это прям сильно ускоряет и упрощает разработку.

    Всё остальное, типа там архитектура, чистота кода, хорошие практики бла бла бла - это так, оно может быть - а может не быть.)

    Ну и изучать толстую книжку от и до совсем не обязательно. Для начала ты можешь просто писать как в javascript, постепенно изучая новые фичи и добавляя.
    Ответ написан
    Комментировать
  • Как убрать границы для тени?

    Aetae
    @Aetae
    Тлен
    Очевидно: не использовать overflow: hidden на контейнере, не класть в контейнер c overflow: hidden, добавить больше внутренних отступов контейнеру с overflow: hidden...

    Для тех, кто нихрена не видит на картинке автора:60f2ee6e94470812686143.png
    Ответ написан
    Комментировать
  • Как передать в PATH миллиметры в параметрах для рисования дуги?

    Aetae
    @Aetae
    Тлен
    Размеры в svg задаются в точках, точки задаётся в viewBox. SVG может принимать любой физический размер, в этом суть вектора.
    Рисовать ты должен, соответственно, в точках, а потом просто указать всему svg нужный размер.
    Для удобства рисования можешь задать viewBox 1к1 с установленным размером в миллиметрах.
    Ответ написан
    Комментировать
  • Как сделать проверку забайнденного атрибута?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Про отправку формы Игорь ответил.
    А правила по условию - точно также как с любыми иными переменными, :rules ничем не отличается от какого-нить :vasya. Делаете computed свойство, которое отдаёт нужное значение и кладёте его в :rules.
    Возможно ещё понадобится quasar'овское свойство reactive-rules(а может и нет).
    Ответ написан
    Комментировать
  • Можно ли восстановить папку проекта из папки dist?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Теоретически - это возможно. На практике - никто нужного софта(декомпилятора) не писал за отсутствием спроса. Ты можешь с помощью мощных beautifier'ов типа jsnice привести код к боль-мене читаемому виду, но от исходника это будет бесконечно далеко.

    Лучше смотри в сторону софта для восстановления файлов типа recuva и, возможно, восстановления local history в ide.
    Ответ написан
    Комментировать
  • Как сделать градиентный border-bottom у тега tr?

    Aetae
    @Aetae
    Тлен
    Яб не парился и сделал как-то так:
    Ответ написан
    1 комментарий
  • Почему весь текст вводится с абзаца?

    Aetae
    @Aetae
    Тлен
    Э-э... А как должно быть?
    Enter всегда отправлял на новый абзац.
    Новая строчка без абзаца - Shift+Enter.
    Или вы о чём-то другом?
    Ответ написан
  • Как упростить запись функции?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Алексей Уколов прав.
    Но если нужен зачем-то именно промис(для цепочки then там, или ещё что), то для этого есть встроенный хэлпер:
    const f = data => Promise.resolve({data});
    Также можно заюзать async с тем же успехом:
    const f = async data => ({data});
    Ответ написан
  • Как упростить запись асинхронной функции?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Если getSpecialData точно асинхронная, то можно опустить async await(потому что оные - всего лишь сахар над Promise, если функция так или иначе возвращает Promise - она асинхронна(и наоборот), напоминать ей об этом не надо):
    getData({params}) {return getSpecialData(p, {params})}


    Дальше, если нам пофиг, что в переданный объект попадёт что-то ещё кроме params и если p не меняется можно просто забиндить, :getData: getSpecialData.bind(null, p)

    Если p меняется использовать стрелку:getData: wParams => getSpecialData(p, wParams)

    Если params должен быть единственным ключом - аналогично:
    getData: ({params}) => getSpecialData(p, {params})

    Если getSpecialData не всегда асинхронная - второй await можно опустить в любом случае:
    async getData({params}) {return getSpecialData(p, {params})}
    getData: async wParams => getSpecialData(p, wParams)
    getData: async ({params}) => getSpecialData(p, {params})
    Ответ написан
    6 комментариев
  • Как обновить mounted hook vue?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Нет, не надо обновлять mounted. Суть в том, что vue весь оптимизирован, и не перемонтирует компонент если точно такой же оказывается на том же месте, просто меняет соответствующие props.

    В твоём случае вместо того чтобы делать запрос в mounted, положи его также как SaveName(hint: в js принят camelCase, PascalCase только для классов) в methods и вызывает оттуда по watch desk_id (immediate: true - чтоб при первой загрузке тож запустилось).
    Ответ написан
    1 комментарий
  • Почему не работает export, import js?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Cannot use import statement outside a module
    Google-Translate: Невозможно использовать оператор импорта вне модуля
    https://learn.javascript.ru/modules-intro
    Ответ написан
    Комментировать