企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## combinReducers优化 `redux`提供了一个`combineReducers`函数来合并`reducer`,不用我们自己合并哦。写起来简单,但是意思和我们自己写的`combinReducers`也是一样的。 `src/redux/reducers.js` ~~~ // 引入redux的combineReducers import { combineReducers } from 'redux' import counter from 'reducers/counter' import userInfo from 'reducers/userInfo' // 删除原来定义的combineReducers export default combineReducers({ counter, userInfo }) ~~~ ## devtool优化 如果我们现在在代码里面有一个`bug`,但是我们从`devtool`工具里并看不出来是哪里错了,浏览器报错只报在`build.js`第几行。 ![](https://box.kancloud.cn/0378a29bd58493fca1c1ce842e2fa075_597x570.png) 这让我们分析错误无从下手,看[这里](https://doc.webpack-china.org/configuration/devtool)。 我们需要添加`webpack`配置`devtool`! `src/webpack.dev.config.js`增加: ~~~ devtool: 'inline-source-map' ~~~ 这次看错误信息是不是提示的很详细了? ![](https://box.kancloud.cn/c48dc4d8c2d861a18a2ec2c198de77c6_647x571.png) 同时,我们在srouce里面能看到我们写的代码,也能打断点调试哦~ ![](https://box.kancloud.cn/7ac4c7c84ddd0a3e303597de9501e44f_1419x734.png) ## 编译css `npm install css-loader style-loader --save-dev` `css-loader`使你能够使用类似`@import` 和 `url(...)`的方法实现 `require()`的功能; `style-loader`将所有的计算后的样式加入页面中; 二者组合在一起使你能够把样式表嵌入`webpack`打包后的JS文件中。 `webpack.dev.config.js` `rules`增加: ~~~ { test: /\.css$/, use: ['style-loader', 'css-loader'] } ~~~ 我们用`Page`页面来测试下,创建`src/pages/Page/Page.css`: ~~~ .page-box { border: 1px solid red; } ~~~ 修改`src/pages/Page/Page.js`: ~~~ import React, { Component } from 'react' import './Page.css' export default class Page extends Component { render() { return <h1 className="page-box">This is Page</h1> } } ~~~ 可以看效果了。 ## 编译图片 `npm install --save-dev url-loader file-loader` `webpack.dev.config.js` `rules`增加: ~~~ { test: /\.(png|jpg|gif)$/, use: [{ loader: 'url-loader', options: { limit: 8192 } }] } ~~~ `options` `limit` `8192`意思是,小于等于8K的图片会被转成`base64`编码,直接插入HTML中,减少`HTTP`请求。 继续用`Page`测试,创建一个images文件夹,放一张图片,并引入图片,修改`src/pages/Page/Page.js`: ~~~ import React, { Component } from 'react' import './Page.css' import image from './images/img.jpg' export default class Page extends Component { render() { return ( <h1 className="page-box"> This is Page <img src={image} /> </h1> ) } } ~~~ 现在图片也能导入了。