React.js + redux + react-router + axios + less + antd
![在这里插入图片描述](https://camo.githubusercontent.com/cd0f91f645cf59144c792aca84363acd90d7a55cd8ac3c41a40e4560eb87e80c/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f32303139303932333135343130303235322e706e673f782d6f73732d70726f636573733d696d6167652f77617465726d61726b2c747970655f5a6d46755a33706f5a57356e6147567064476b2c736861646f775f31302c746578745f6148523063484d364c7939696247396e4c6d4e7a5a473475626d56304c334678587a51794d4451354e4451312c73697a655f31362c636f6c6f725f4646464646462c745f3730)
yarn add antd
yarn add react-app-rewired customize-cra
yarn add babel-plugin-import
修改package.json
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "reactapp-rewired test"
}
然后在项目根目录创建一个 config-overrides.js 用于修改默认配置
const { override, fixBabelImports } = require('customize-cra');
module.exports = override(
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: 'css',
}),
);
import React, { Component } from 'react';
import { Button } from 'antd';
import './App.css';
class App extends Component {
render() {
return (
<div className="App">
<Button type="primary">Button</Button>
</div>
);
}
}
export default App;
通过使用props实现
即:
<MyDrawer>
{this.props.children}
</MyDrawer>
<Button onClick={() => this.eventAction(param)}></Button>
安装依赖
npm install --save http-proxy-middleware
在src/目录下新建setupProxy.js
const proxy = require('http-proxy-middleware')
module.exports = function(app) {
app.use(
'/api',
proxy({
target: 'http://localhost:3000',
changeOrigin: true
})
)
}
安装依赖
npm install --save express
新建mock文件夹,新建server.js
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('hello world')
})
app.listen(3000)
PS:说实话还是Vue mock数据简单,这个mock数据还得创一个服务器给Node...
history的push方法路由变化,页面不会变化 暂时用Link标签
解决:react-router4.0已经不支持通过browserHistory进行push/replace操作
react-router4.0提供了withRouter高阶组件
可以在组件中通过 this.props.history.push(path)
export default withRouter(组件)
实现路由组件的跳转