从零开始创建一个react项目
一、首先创建一个文件夹,打开终端输入
1 create-react-app myapp
等待项目的生成,项目生成后
1 cd myapp //进入创建的项目文件夹 2 3 yarn start //启动项目,或者 4 5 npm start
删除不必要的文件后梳理需要安装那些依赖
1.react-router-dom路由
2.axios
3.js-cookie
4.redux、react-redux状态管理
5.swiper 轮播图插件
6.node-sass sass-loader sass编译
7.react-transition-group 动画
使用命令进行安装
1 cnpm i react-router-dom axios js-cookie redux react-redux swiper node-sass sass-loader react-transition-group -D
安装完成后在main.js逐个引入
import {Provider} from 'react-redux'; import axios from 'axios'; import jsCookie from 'js-cookie';
import store from './store/store.js' //redux需要一个仓库进行存储 React.Component.prototype.$axios = axios; React.Component.prototype.$cookie = jsCookie; ReactDOM.render(<Provider store={store}></Provider> ,document.getElementById('root'));
稍后创建store仓库,首先创建路由文件
在src下创建Router.js文件,写入
1 import React from 'react'; 2 import { BrowserRouter,Route,Switch } from 'react-router-dom'; //BrowserRouter 用来保持UI和URL的同步 Route负责匹配url的ui Switch只渲染一个路由 3 4 import Header from ./components/Header //引入一个普通页面 5 import Page from './pages/page' //引入一个需要路由的页面 6 7 const BasicRoute = (props)=>{ 8 return ( 9 <BrowserRouter> 10 <div className="box"> 11 <Header></Header> 12 <Switch> 13 <Route path='/' component={page}></Route> 14 </Switch> 15 </div> 16 </BrowserRouter> 17 ) 18 } 19 export default BasicRoute
20
21//在main.js引入Router.js文件
22 import BasicRoute from './Router.js'
23 ReactDOM.render(<Provider stoer={store}> <BasicRoute></BasicRoute> </Provider>, document.getElementById('root'));
接着我们创建store仓库,首先在src下创建一个store的文件夹,创建store.js文件写入
import { createStore } from 'redux'; import reducers from './reducers.js'; //用来存放store仓库的逻辑代码和state数据 const store = createStore(reducers); export defualt store;
创建reducers.js文件
const stateDefualt = { } //存放数据 const reducers = function(state=stateDefualt,action){ } //用来存放逻辑代码 export defualt reducers;
创建两个文件夹components用来存放主要的组件,pages用来存放路由组件或者子组件,一般创建组件可以创建一个文件夹,里面存放两个文件Index.js和Header.js UI页面
1 //index.js 用来和redux进行联动 2 import { connect } from 'react-redux'; 3 import Header from 'Header.js' //引入UI页面 4 5 //用来获取redux的state的数据 6 const mapStateToProps = (state,props)=>({ 7 8 }) 9 10 //用来绑定时间修改state数据 11 const mapDispatchToProps = (dispatch)=>({ 12 13 }) 14 15 export default connect(mapStateToProps,mapDispatchToProps)(Header)
//Header.js用来写入UI代码 import React,{Component} from 'react'; class Header extends Component{ constructor(){ super(); this.state = { //定义数据 } } render(){ return ( <div> </div> ) } } export default Header