如何用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