Как я могу добавить стиль к элементу тела с помощью JSS?

В выпуске 2.0.32-бета команда Mockito перенесла классы cglib в разделенную банку . Но PowerMock по-прежнему зависит от перемещенных классов, поэтому вы получаете java.lang.NoClassDefFoundError.

В версии 1.6.2 классы Mockito были скопированы в PowerMock, но не все. В качестве обходного пути я могу предложить клонировать, строить и добавлять к classpath файл mockito-cglib ( https://github.com/mockito/mockito-cglib ).

PowerMock будет иметь поддерживаемый Mockito 2 API с версии 1.6.5, который будет выпущен к концу мая, но все равно будет использовать cglib. Полный Mockito 2 с Bytebuddy будет поддерживаться в версии после 1.6.5.

Руководство разработчика для миграции в Mockito 2

0
задан isherwood 15 January 2019 в 15:14
поделиться

2 ответа

Вы можете использовать синтаксис, введенный jss-plugin-global

  '@global': {
    body: {...}
  }

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

0
ответ дан Oleg Isonen 15 January 2019 в 15:14
поделиться

Я просто разработал ответ Олега, вот что я сделал:

1. Создайте свой собственный JssProvider. Примечание: Пришлось бы также добавить jss-plugin-camel-case, в противном случае он не будет анализировать мои свойства с camelCase на lisp-case:

import App from './App';
import { create } from 'jss';
import { JssProvider } from 'react-jss';
import globalPlugin from 'jss-global';
import camelCase from 'jss-plugin-camel-case';

const jss = create();
jss.use(globalPlugin(), camelCase());

render(
    <JssProvider jss={jss}>
        <Router>
            <App />
        </Router>
    </JssProvider>
    document.getElementById("app")
);

2.Добавил мое глобальное свойство в топ компонент уровня

import React from "react";

import Main from "./common/ui/components/Main";
import NotFound from "./components/NotFound";
import injectSheet from 'react-jss';

const style = {
    '@global': {
        body: {
            margin: 0
        }
    }
};

const App = () => {
    return (
        <Main>
            <Switch>
                <Route component={NotFound}/>
            </Switch>
        </Main>
    );
};

export default injectSheet(style)(App);

И это все! Работал как шарм.

РЕДАКТИРОВАТЬ: После еще одного исследования я обнаружил, что мне не нужен шаг 1. Просто добавление стиля @global к моему компоненту App сделало свою работу. Я думаю, этот плагин jss-global должен быть по умолчанию в react-jss. (кто-то поправит меня, если я ошибаюсь)

0
ответ дан Thiago Loddi 15 January 2019 в 15:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: