Compare commits

...
This repository has been archived on 2022-03-23. You can view files and clone it, but cannot push or open issues or pull requests.

1 Commits
master ... mui

Author SHA1 Message Date
zhouxhere 4c24eff373 添加material-ui简单使用 2022-01-24 15:30:55 +08:00
8 changed files with 938 additions and 549 deletions

1336
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,10 @@
"author": "zhouxhere", "author": "zhouxhere",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@emotion/react": "^11.7.1",
"@emotion/styled": "^11.6.0",
"@mui/icons-material": "^5.3.0",
"@mui/material": "^5.3.0",
"axios": "^0.24.0", "axios": "^0.24.0",
"core-js": "^3.20.2", "core-js": "^3.20.2",
"moment": "^2.29.1", "moment": "^2.29.1",
@ -45,8 +49,6 @@
"eslint-webpack-plugin": "^3.1.1", "eslint-webpack-plugin": "^3.1.1",
"html-webpack-plugin": "^5.5.0", "html-webpack-plugin": "^5.5.0",
"husky": "^7.0.4", "husky": "^7.0.4",
"less": "^4.1.2",
"less-loader": "^10.2.0",
"lint-staged": "^12.1.7", "lint-staged": "^12.1.7",
"postcss": "^8.4.5", "postcss": "^8.4.5",
"postcss-flexbugs-fixes": "^5.0.2", "postcss-flexbugs-fixes": "^5.0.2",

View File

@ -1,8 +1,21 @@
import React from 'react' import React, { useEffect } from 'react'
import Router from './router' import Router from './router'
import { useSelector } from 'react-redux'
import { createTheme, ThemeProvider } from '@mui/material'
const App = () => { const App = () => {
return <Router /> const themeConfig = useSelector((state) => state.theme)
const theme = createTheme(themeConfig)
useEffect(() => {
console.log('app load')
}, [])
return (
<ThemeProvider theme={theme}>
<Router />
</ThemeProvider>
)
} }
export default App export default App

View File

@ -0,0 +1 @@
module.exports = {}

View File

@ -1,3 +1,5 @@
import { Button } from '@mui/material'
import { orange } from '@mui/material/colors'
import React, { useCallback } from 'react' import React, { useCallback } from 'react'
import { useDispatch } from 'react-redux' import { useDispatch } from 'react-redux'
@ -12,13 +14,39 @@ const Home = () => {
dispatch({ type: 'DEL_COUNT' }) dispatch({ type: 'DEL_COUNT' })
}, [dispatch]) }, [dispatch])
const changeTheme = useCallback(() => {
dispatch({
type: 'THEME_UPDATE',
palette: {
primary: {
main: orange[500],
},
},
})
}, [dispatch])
const resetTheme = useCallback(() => {
dispatch({
type: 'THEME_RESET',
})
}, [dispatch])
return ( return (
<div> <div>
<h3>home page</h3> <h3>home page</h3>
<button onClick={addCount}>add</button> <Button variant='outlined' onClick={addCount}>
<button onClick={delCount}>del</button> add
</Button>
<Button variant='outlined' onClick={delCount}>
del
</Button>
<Button variant='outlined' onClick={changeTheme}>
change
</Button>
<Button variant='outlined' onClick={resetTheme}>
reset
</Button>
</div> </div>
) )
} }
export default Home export default Home

View File

@ -4,9 +4,11 @@ import storageEnhancer from './enhancer/storage'
import loggerMiddleware from './middleware/logger' import loggerMiddleware from './middleware/logger'
import appReducer from './reducer/app' import appReducer from './reducer/app'
import countReducer from './reducer/count' import countReducer from './reducer/count'
import themeReducer from './reducer/theme'
const reducer = combineReducers({ const reducer = combineReducers({
app: appReducer, app: appReducer,
theme: themeReducer,
count: countReducer, count: countReducer,
}) })
const middlewareEnhancer = applyMiddleware(loggerMiddleware, thunk) const middlewareEnhancer = applyMiddleware(loggerMiddleware, thunk)

View File

@ -0,0 +1,23 @@
import * as defaultTheme from '../../config/defaultTheme'
import { copyTool } from '../../util/copy'
import { storeTool } from '../../util/store'
const updateTheme = (state, params) => {
return copyTool.merger(state, params)()
}
const resetTheme = () => {
return defaultTheme
}
const saveTheme = (themeState) => {
return themeState
}
const themeReducer = storeTool.createReducer(defaultTheme, {
THEME_UPDATE: updateTheme,
THEME_RESET: resetTheme,
THEME_SAVE: saveTheme,
})
export default themeReducer

View File

@ -85,40 +85,40 @@ module.exports = {
require.resolve('postcss-loader'), require.resolve('postcss-loader'),
], ],
}, },
{ // {
test: /\.less$/, // test: /\.less$/,
exclude: /\.module\.less$/, // exclude: /\.module\.less$/,
use: [ // use: [
require.resolve('style-loader'), // require.resolve('style-loader'),
{ // {
loader: require.resolve('css-loader'), // loader: require.resolve('css-loader'),
options: { // options: {
importLoaders: 3, // importLoaders: 3,
modules: { // modules: {
mode: 'icss', // mode: 'icss',
}, // },
}, // },
}, // },
require.resolve('postcss-loader'), // require.resolve('postcss-loader'),
require.resolve('less-loader'), // require.resolve('less-loader'),
], // ],
sideEffects: true, // sideEffects: true,
}, // },
{ // {
test: /\.module\.less$/, // test: /\.module\.less$/,
use: [ // use: [
require.resolve('style-loader'), // require.resolve('style-loader'),
{ // {
loader: require.resolve('css-loader'), // loader: require.resolve('css-loader'),
options: { // options: {
importLoaders: 3, // importLoaders: 3,
modules: true, // modules: true,
}, // },
}, // },
require.resolve('postcss-loader'), // require.resolve('postcss-loader'),
require.resolve('less-loader'), // require.resolve('less-loader'),
], // ],
}, // },
], ],
}, },
resolve: { resolve: {