创建react项目流程

Gitee创建项目
一、创建仓库(点击克隆复制链接)
Git Bash Here
第一步:git clone 仓库链接
第二步:cd 仓库名称
第三步:node -v(确认node版本)
第四步:npx creact-react-app 项目名称 (创建项目)
第五步:git add --all        git commit -m ''        git push
第六步:cd 项目名称
第七步:yarn eject

二、打开项目
替换script
"scripts": {
        "build-css": "node-sass-chokidar src/ -o src/",
        "watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive  --use-polling --polling-interval 1000",
        "start-js": "node scripts/start.js",
        "start": "npm-run-all -p watch-css start-js",
        "build-js": "node scripts/build.js",
        "build": "npm-run-all build-css build-js",
        "test": "node scripts/test.js --env=jsdom"
},

三、安装sass
yarn add node-sass-chokidar
yarn add npm-run-all

四、基础操作
1.在src下新建文件夹styles
2.styles里新建index.scss
3.在index.js 里将`import "./index.css"`改成`import "./styles/index.css"`
4.启动项目 index.css自动生成

五、打包yarn build 
- 在src平级创建一个.env文件

      GENERATE_SOURCEMAP=false
      PUBLIC_URL=./

 六、代理(开发联调方式)
- 在src下创建一个setupProxy.js文件
- yarn add http-proxy-middleware
- 根据接口链接写出对应代码
- 在需要跨域的jsx文件中引入unit.js,使用对应所需要求的方法

七、Route
- yarn add react-router-dom
- 在src下新增一个Router.js文件
- 修改index.js部分代码
- 在App.js中写入

      import Home from './view/home';
      <Route exact path="/" component={Home} />
      {/* exact:精准匹配,严格模式 */}
      {/* path:自定义的url */}
      {/* component:自定义页面关联的jsx文件页面 */}
      <Redirect to='/'/>
      {/* Redirect:非法url,要跳到哪个位置 */}

- 创建jsx页面

      <NavLink exact to="/">首页</NavLink>
      <NavLink to="/form">表单</NavLink>
      <Link to='/'>首页</Link>
      <Link to='/about'>关于</Link>
      两种方法的区别:NavLink自带active

八、mobx
- 安装
   yarn add mobx   yarn add mobx-react
- 在src下新建一个名字为store的文件夹 新建文件
- 文件中

      import {observable, computed, action, autorun,runInAction} from 'mobx';
      class Store {
         @observable name='小洋';
          //相当于 this.state={name:'小洋'} 可以被读取,也可以被修改
          constructor(){
             makeObservable(this)
          }
          @action setName=(text)=>{
              this.name=text;
          }
          //相当于 this.setState({name:text})
      }
      export default Store;

- 在Router.js中添加代码

      import { Provider } from 'mobx-react';
      import { observable, useStrict ,autorun} from 'mobx';
      import App from './App.js';
      import firstStore from './store/first';
      const stores = {
        first: new firstStore(),
      };
      <Provider {...stores}>
          <App/>
      </Provider>

注意:这时会出现报错,解决方法如下
- yarn add @babel/plugin-proposal-decorators
- yarn add @babel/plugin-proposal-class-properties
- 在package.json中添加代码

      "presets": [
              ["react-app"],
              ["@babel/preset-react"]
          ],
          "plugins": [
              ["@babel/plugin-proposal-decorators", {"legacy": true }],
              ["@babel/plugin-proposal-class-properties", { "loose" : true }]
      ]

这时错误就会消失,随后在进行如下步骤
- jsx文件中

      引入import {observer,inject} from 'mobx-react';
      再导入所需要的模块
      @withRouter
      @inject('first')
      @observer//让页面变成响应式,能读取和操作store

九、redux
- 安装
yarn add react-redux redux
- 入口注入
router.js注入   import {Provider} from 'react-redux';   import store from ‘./Store.js’;
- 引入 小state 合并生成store.js 引入reducer  combineReducers合并整合多个reducer
再进行 createStore() createStore(reducer,applyMiddleware(thunk))
第一参数 reducer (纯函数,返回新的state)
第二个参数 state 初始化值 null
第三个 中间件
- 对应页面的小store(编写_store.js)
reducer纯函数
state+action生成新的state
action (定义了state,操作state,相当于setState) 
- actions 修改state(数据初始化,操作方法)
- actionsTypes.js
- reducer.js 生成新的state 计算
- 页面中引入
import {connect} from ‘react-redux’;
export default connect(mapStateToProps,mapDispatchToProps)(View);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值