React JS:应用Material-UI CssBaseline

Big*_*ddy 6 css reactjs material-ui

我想为我的新React应用程序提供一致的外观和感觉Material-UI.此外,我希望样式等易于维护.所以默认主题似乎是一个非常好的开始.该cssBaseline所提供的Material-UI似乎要检查所有的盒子,所以我想试一试.令人惊讶的是,它不起作用.Css主题不是我真正的东西.我在这里误入歧途还是什么?以下代码是我在App.js组件中实现的,没有运气(取自此处).我希望这只是一个细节.

import React from "react";
import Footer from "./Footer";
import CssBaseline from "@material-ui/core/CssBaseline";
import AddTodo from "../containers/AddTodo";
import VisibleTodoList from "../containers/VisibleTodoList";

const App = () => (
  <React.Fragment>
    <CssBaseline />
    <div>
      <AddTodo />
      <VisibleTodoList />
      <Footer />
    </div>
  </React.Fragment>
);

export default App;
Run Code Online (Sandbox Code Playgroud)

编辑:这是index.js位于项目的根目录:

    import React from "react";
    import { render } from "react-dom";
    import { createStore, applyMiddleware } from "redux";
    import { Provider } from "react-redux";
    import App from "./components/App";
    import rootReducer from "./reducers";

    const store = createStore(rootReducer);

   render(
      <Provider store={store}>
        <MuiThemeProvider theme={theme}>
          <React.Fragment>
            <CssBaseline />
            <App />
          </React.Fragment>
        </MuiThemeProvider>
      </Provider>,
      document.getElementById("root")
    );
Run Code Online (Sandbox Code Playgroud)

编辑: 我的新App.js.

import React from "react";
import Footer from "./Footer";
import AddTodo from "../containers/AddTodo";
import AppBar from "../components/AppBar";
import VisibleTodoList from "../containers/VisibleTodoList";

const App = () => (
  <div>
    <AppBar />
    <AddTodo />
    <VisibleTodoList />
    <Footer />
  </div>
);
export default App;
Run Code Online (Sandbox Code Playgroud)

Ric*_*tch 12

CSSBaseline组件应该在Material UI ThemeProvider组件中使用.在您的示例中,您没有包含ThemeProvider,因此没有Material UI主题.

有关如何设置ThemeProvider的信息,请参阅官方文档:https://material-ui.com/customization/themes/#muithemeprovider

基于此示例,CSSBaseline的最小工作示例将是:

import React from 'react';
import { render } from 'react-dom';
import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';
import CssBaseline from "@material-ui/core/CssBaseline";
import Root from './Root';

const theme = createMuiTheme();

function App() {
  return (
    <MuiThemeProvider theme={theme}>
      <React.Fragment>
        <CssBaseline />
        <Root />
      </React.Fragment>
    </MuiThemeProvider>
  );
}

render(<App />, document.querySelector('#app'));
Run Code Online (Sandbox Code Playgroud)

要加载Roboto字体,请将其添加到您的html模板中

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
Run Code Online (Sandbox Code Playgroud)

有关更完整的示例,请查看此官方示例的源代码:https://github.com/mui-org/material-ui/tree/master/examples/create-react-app/src

  • public/index.html:加载roboto字体
  • src/withRoot.js:ThemeProvider和CSSBaseline设置
  • src/pages/index.js:应用了MUI主题的示例组件