代码之家  ›  专栏  ›  技术社区  ›  Big Daddy

React JS:应用材料UI CssBaseline

  •  5
  • Big Daddy  · 技术社区  · 6 年前

    我想把新的 React 应用程序使用一致的外观和感觉 Material-UI . 另外,我希望样式等易于维护。所以默认的主题看起来是一个很好的开始。这个 cssBaseline 提供人 物料界面 好像把所有的盒子都勾了,所以我想试试。但奇怪的是,这不管用。Css主题并不是我真正喜欢的东西。我是被误导了还是怎么了?下面的代码是我在App.js组件中不走运地实现的(摘自 here ). 我希望只是一个实施细节。

    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;
    

    编辑 :这是 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")
        );
    

    编辑: 我的新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;
    
    1 回复  |  直到 6 年前
        1
  •  11
  •   Ricovitch    6 年前

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

    请参阅官方文档以了解如何设置浏览器: 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'));
    

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

    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
    

    有关更完整的示例,请查看此官方示例的源代码: 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主题的示例组件