Nano Hash - криптовалюты, майнинг, программирование

Сгенерированная настройка имени класса jss?

Я работаю над концептуальным приложением с микро-интерфейсом, использующим single-spa, react и material-ui. Я столкнулся с проблемой, когда сгенерированные имена классов из Mui топают друг друга, потому что в родительском приложении зарегистрировано несколько отдельных приложений, и каждое дочернее приложение имеет свой собственный генератор имен классов Mui.

Пример

Первое дочернее приложение — это Drawer для навигации слева, и оно добавляет следующий элемент <style /> к head:

<style data-jss="" data-meta="MuiDrawer">
...
.jss3 {
  left: 0;
  right: auto;
}
...
</style>

Второе дочернее приложение — это AppBar, обеспечивающее верхнюю навигацию, и добавляет следующий элемент <style /> к head:

<style data-jss="" data-meta="MuiAppBar">
...
.jss3 {
  top: 0;
  left: auto;
  right: 0;
  position: absolute;
}
...
</style>

Эти затирающие имена приводят к тому, что этот класс (среди прочих) в конечном итоге выглядит так, когда я проверяю элемент MuiDrawer:

.jss3 {
    top: 0;
    left: auto;
    right: 0;
    position: absolute;
}

Я просмотрел документацию Mui и проблемы, пытаясь выяснить, есть ли способ настроить имена в каждом приложении, чтобы одно могло сгенерировать .app1-jss3, а другое могло сгенерировать .app2-jss3. Пока я не нашел ничего, что могло бы решить эту проблему. Ищем какое-то направление.

17.10.2018

Ответы:


1

Решение:

import JssProvider from 'react-jss/lib/JssProvider';
import { createGenerateClassName } from '@material-ui/core/styles';

const generateClassName = createGenerateClassName({
  seed: 'app1'
});

function App() {
  return (
    <JssProvider generateClassName={generateClassName}>
      ...
    </JssProvider>
  );
}

export default App;
17.10.2018
  • У вас есть решение для react-jss v10. Приведенное выше решение не работает для меня. Борьба за последние три дня. Любая помощь могла бы быть полезна. 20.11.2019
  • Я не делаю. Это было для прототипа, который я не буду посещать снова в течение нескольких месяцев. Вы пробовали disableGlobal упомянутые ниже и в их обновленных документах? material-ui.com/styles/api/ 21.11.2019
  • Получил решение для этого. Пришлось использовать StyleProvider вместо JSSProvider. Оно работало завораживающе 22.11.2019

  • 2

    https://material-ui.com/customization/css-in-js/ объясняет все ваши вопросы (почему имена выглядят так, как получить детерминированные имена в продакшене, как использовать префикс).

    Если вы столкнулись с конфликтующими именами классов, было бы неплохо обернуть провайдером jss все приложения (доступно в react-jss).

    17.10.2018

    3

    В моем случае не забудьте параметр disableGlobal, иначе это не сработает.

    createGenerateClassName({
      disableGlobal: true,
      seed: 'app1'
    });
    
    23.10.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..