1. 程式人生 > >如何用react+react-router+fetch+webpack2簡單整合一個移動端專案

如何用react+react-router+fetch+webpack2簡單整合一個移動端專案

前言:根據公司業務的要求,我最近用react寫了一個專案,已經上線,把道路中遇到的一些坑和一些專案中的經驗分享和大家共勉。
***這是目錄結構***

這裡寫圖片描述
當然結構是根據自己專案的複雜程度來定義的,但是大體上都是這樣。

1.技術選型

為什麼我要選擇react,首先我看重的是他的單向資料流,他是和js單執行緒保持一致的,然後是因為畢竟是facebook團隊來維護,準確性和可信度就不用說了。最後從2013年react釋出到現在也四年了,坑踩得差不多了。

2.專案的前期準備

先搞個react+react-router+webpack能跑起來的demo,helloworld也可以,具體可以參照官網或http://www.ruanyifeng.com/blog/2015/03/react.html,http://www.ruanyifeng.com/blog/2016/05/react_router.html   

3.專案的實戰

根據頁面和頁面的邏輯建好符合自己的資料夾,開始畫頁面了,這裡邊有幾點注意的也是我做的時候遇到的問題:

(1)css在react中的寫法

,網上有很多的例子比如css in js ,CSS Modules,我覺得都不夠靈活,和之前我們的寫法差別太大,我是採用直接引入css的方式來做的


import React from 'react';
import '../../css/ious.less';
export default class IousAgreement extends React.Component {
    render() {
        var a = ['a'
,'b','c'] return ( <div> {a.map((item,index) => { return <p key={index} className="txt">this is{item}</p> })} 這是協議頁面 </div> ); }; componentDidMount(){ document.title = '協議'
} }

less裡邊還是按照咱們以前的方式寫,很爽,當然這離不開神器webpack

{ test: /\.less$/, exclude: /node_modules/, loader: 'style-loader!css-loader!postcss-loader!less-loader' },

網上很多webpack的配置,webpack2的官網也很詳細,建議大家看下

(2)fetch低端機不能發出請求

ios低端機和紅米手機有問題,主要是profill的問題,所以在請求裡需加上。

require('es6-promise').polyfill();
require('isomorphic-fetch');

然後在使用fetch

(3)後端返回maplist物件

前端處理習慣陣列了,後端有時候會給你返回list物件,那麼前端就需要通過先獲取object中的key然後遍歷key來獲取value.

    let list = Object.keys(tf).sort().reverse().map((name, indexs) => {
      return <div key={indexs}>
        <div class="popup-title">{name}</div>
        <ul>
          {group_bills[name].map((item, index) => {
            return <li key={index} onClick={this.reloadPage.bind(this, item.billId, item.billMonth)}>
              <p>
                <i>{item.serNo.slice(-2)}月賬單</i>
              </p>
              <span class="iconfont icon-icon-angle-right"></span>
            </li>
          })}
        </ul>
      </div>
    })

(4)心中時刻想著狀態驅動資料變化

不要總想著通過dom 獲取,儘量使用state來驅動檢視的變化,例如:

{
    this.state.amount
    ?
    <div class="detail-tip">有退款{this.state.amount}元,已退回</div>
    :
    ''
}

(6)react-router2.X ios機子上頁面一直處於載入中

router後邊的引數導致?k_123之類的,去掉就好了

import { Router, useRouterHistory ,Route, IndexRoute} from 'react-router'
import { createHashHistory } from 'history'
// useRouterHistory creates a composable higher-order function
const appHistory = useRouterHistory(createHashHistory)({ queryKey: false })

(6)自己封裝的js引入

webpack中配置
const CopyWebpackPlugin = require('copy-webpack-plugin');//處理自己封裝的js
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, 'src/js/encrypt'),
        to: 'static/encrypt',
        ignore: ['.svn']
      },
      {
        from: path.resolve(__dirname, 'src/js/utils'),
        to: 'static/utils',
        ignore: ['.svn']
      }
    ])

jsx中引入圖片,要使用require

<img src={require('../../images/noious.jpg')}

東西還有很多,我這裡主要和大家分享這六點,歡迎大家拍磚

4專案的總結
其實還有很多的細節,但是其他的解決起來谷歌很快能找到,我就不一一贅述了。整個專案邏輯還算可以所以沒有引入react-redux,後期我會加入再和大家分享。

相關推薦

如何用react+react-router+fetch+webpack2簡單整合一個移動專案

前言:根據公司業務的要求,我最近用react寫了一個專案,已經上線,把道路中遇到的一些坑和一些專案中的經驗分享和大家共勉。 ***這是目錄結構*** 當然結構是根據自己專案的複雜程度來定義的,但是大體上都是這樣。 1.技術選型 為什

簡單一個移動touch事件

var mybody = document.getElementsByTagName('body')[0];         //滑動處理     var startX, startY, moveEndX, mov

react-native-router-flux(簡單應用)

lex app turn rom pos dir ber round ans 安裝 創建項目;並且安裝上 react-native-router-flux 包 react-native init ReactNativeRouterFluxDemo cd React

react滾動條開發 適配PC 和 移動的滾動 顯示隱藏header和footer/滾動顯隱公用元件

功能描述: 移動端時,上滾則顯示footer,下滾則隱藏footer PC端時,上滾則顯示header,下滾則隱藏header。 xx.js import React, { Component } from 'react'; import { BrowserR

react+redux+webpack移動專案總結

前言 距離我進新公司也有一個多月,這一個月的事件使用react寫了一個專案,期間斷斷續續重構了兩三次,目前已經完成第一階段測試,也總結分享一些使用react的一些坑。 react 先囉嗦幾句講一下react原理,新人可以認真看下,老鳥可跳過。 r

Vue-book 2.0 一個移動簡單的全棧 web APP

Vue-book 2.0 http://www.tuicool.com/articles/3YfUbmJ 說明(菜鳥請進,大神繞道 ~) 前端: Vue.js + Vuex + Webpack2 後端: php + MySQL 要是你對 PHP 和 MyS

簡單粗暴的移動圖片瀏覽外掛demo

使用方法: 首先引入 jQuery <script src="./fly-zomm-img.min.js"></script> 再引入 圖片瀏覽外掛 <script

canvas寫了一個移動走勢圖

<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> &l

Spring Security, JWT, Vue實現一個前後分離無狀態認證Demo

簡介 完整程式碼 https://github.com/PuZhiweizuishuai/SpringSecurity-JWT-Vue-Deom 執行展示   後端 主要展示 Spring Security 與 JWT 結合使用構建後端 API 介面。 主要功能包括登陸(如何在 Spring

react + redux + router一個todo

有用 Redux 升級 開發 代碼 git 我只 ima 參考 概述 最近學習redux,打算用redux + router寫了一個todo。記錄下來,供以後開發時參考,相信對其他人也有用。 註意: 我只實現了Footer組件的router,其它組件的實現方法是類似的。

React Router路由的簡單使用方法

      路由系統可以在瀏覽器的URL發生改變的時候,做出一些響應,使頁面與URL同步。       React Router是為React設計的一款路由庫。 效仿官方示例庫,用一個簡單的例子,瞭解路由的一些特性。使用es6。         效果如圖:                        

react-native-router-flux

prop 中心 tabs gin val swipe key property float react-native-router-flux 1.react-native-router-flux是一個第三方的路由組件,目前的最新V4版本已經基於react-navigatio

react初探索--react + react-router + ant-design 後臺管理系統配置

後臺 top key detail trees radi 嘗試 ouya img 首先確認安裝了node環境,Node >= 6。 如果對react 及 ant-design 一無所知,建議去閱讀下api文檔,react 可以在 codePen 在線練習。 react

React中的fetch請求相關

targe 代碼執行 not 示例 tail 發送 all es6 operation fetch在reactjs中等同於 XMLHttpRequest,它提供了許多與XMLHttpRequest相同的功能,但被設計成更具可擴展性和高效性。 Fetch 的核心在於對 HTT

react學習筆記(一)create-react-app構建 React 開發環境

打開 img 配置 快速 reat webpack src class info React 可以高效、靈活的用來構建用戶界面框架,react利用高效的算法最小化重繪DOM。 create-react-app 是來自於 Facebook,通過該命令不需配置就能快速構建 R

React 折騰記 - (7) 基於React+Antd封裝聊天記錄(React的memo,lazy, Suspense這些)

前言 在重構的路上,總能寫點什麼東西出來 , 這元件並不複雜,放出來的總覺得有點用處 一方面當做筆記,一方面可以給有需要的人; 有興趣的小夥伴可以瞅瞅… 效果圖 實現的功能 渲染支援圖片,文字,圖文 支援刪除條目(並給予父回撥)

React+React Router+React-Transition-Group實現頁面左右滑動+滾動位置記憶

在React Router中,想要做基於路由的左右滑動,我們首先得搞清楚當發生路由跳轉的時候到底發生了什麼,和路由動畫的原理。   首先我們要先了解一個概念:history。history原本是內置於瀏覽器內的一個物件,包含了一些關於歷史記錄的一些資訊,但本文要說的history是React-R

Redux入門0x106: `react`、`vue`、`原生 js`整合`redux`

0x000 概述 之前寫的所有關於redux的文章都是純粹的redux,是和框架無關、環境無關的redux,所以我沒有將redux和react一起講,為的是吧redux和react分開,作為獨立的個體來分析,redux提現的是一種思想,而不是一個思維定式。而現在我們

react-native整合到現有原生專案

必須具備react-native的開發環境 建立結構目錄 建立一個名為rn_test的資料夾(這個資料夾是存放react-native專案的),在rn_test資料夾中建立名為android的資料夾(是存放android專案的)把原生專案複製進去,這裡我建立了一個新的 引入rea

教你React Native使用fetch實現圖片上傳

本篇文章主要介紹了React Native使用fetch實現圖片上傳的示例程式碼,寫的十分的全面細緻,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。 普通網路請求引數是JSON物件 圖片上傳的請求引數使用的是formData物件 使用fet