react項目中遇到的BUG

前情提要:最近在學習react,然後就將項目中遇到的bug總結下來,作爲借鑑!

項目結構:

demo

    |app

        |app.js

        |main.js

        |center.js

        |toutiao.js

        |quanzi.js

        |shipin.js

        |dinggou.js

        |style.css

    |build

        |index.html

     |.babelrc

     |package.json

     |node_modules

     |webpack.config.js

html文件:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="box">

</div>
<script src="http://localhost:8080/webpack-dev-server.js"></script>
<script src="app.js"></script>
<script src="main.js"></script>
</body>
</html>

app.js、main.js、center.js、toutiao.js、quanzi.js、shipin.js、dinggou.js文件如下:

//app.js文件
import React from 'react';
import { Link } from 'react-router';
import Jquery from "./jquery.js";
import styles from "./style.css";

class App extends React.Component {
constructor(props) {
super(props);
}

render() {
return (
<div>
  <h1> 歡迎訪問主界面 </h1>
<div className="showBox">
{
this.props.children
}
</div>
   <ul>
<li><Link to="/center" activeStyle={{background:"blue"}} >用戶中心 </Link></li>  
<li><Link to="/quanzi" className="danger" > 圈子 </Link></li>
<li><Link to="/shipin" activeStyle={{background:"blue"}}> 視頻 </Link></li>
<li><Link to="/toutiao" activeStyle={{background:"blue"}}> 頭條 </Link></li>
<li><Link to="/dinggou" activeStyle={{background:"blue"}}> 訂購 </Link></li>
</ul>
</div>
);
}
}
//代替A標籤 不需要使用hash值  
// this.props.children 指代是每一個 route 嵌套結構下的子組件 
export default  App
//main.js文件
import React, { Component, PropTypes } from 'react';
import ReactDOM,{render} from 'react-dom';
import { Router,Route,hashHistory,Link,browserHistory,IndexRoute,IndexRedirect,Redirect } from 'react-router';
import App from './app.js';
import Center from './center.js';
import Toutiao from './toutiao.js';
import Quanzi from './quanzi.js';
import Dinggou from './dinggou.js';
import Shipin from './shipin.js';
import styles from "./style.css" 


//1.主視圖
var doc = document.getElementById("box");
render((
        <Router history={ browserHistory }>
            <Route path="/" component={App}>
                <IndexRoute path="/center" component={ Center } /> //設置默認路由
                <Route path="/toutiao" component={Toutiao} />
                <Route path="/quanzi" component={Quanzi} />
                <Route path="/shipin" component={Shipin} />
                <Route path="/dinggou" component={Dinggou} />
                <IndexRedirect to="/toutiao"> </IndexRedirect>
            </Route>
        </Router>
    ),doc)
//center.js文件  其他類似
import React from 'react';

class Center extends React.Component {
constructor(props) {
super(props);
}

render() {
return (
<div>
  個人中心
</div>
);
}
}
export default  Center

webpack.config.js文件

var webpack = require("webpack");

var path = require("path")
module.exports = {
devtool:"eval-source-map",
entry:  {
main:["webpack/hot/dev-server",__dirname + "/app/main.js"],
app:["webpack/hot/dev-server",__dirname + "/app/app.js"]
},
output:{
path:__dirname + "/build",
filename:"[name].js" //變量 name 固定的API
},
module:{
loaders:[
{
test:/\.js$/,
exclude:/node_modules/,
loader:"babel-loader" //webpack  2.0 寫法  1.0 不寫-loader
},
{
test:/\.css$/,
loader:"style-loader!css-loader" //webpack  2.0 寫法  1.0 不寫-loader
},
{
test:/\.(jpg|png)$/,
loader:"url-loader?limit=8192" //webpack  2.0 寫法  1.0 不寫-loader 當 圖片大小低於8192 會自動轉換 base64格式的圖片
}
]
},
plugins:[
new webpack.HotModuleReplacementPlugin(), //熱替換 熱更行 熱加載
new webpack.optimize.UglifyJsPlugin(),//壓縮JS代碼 
]
}

.babelrc文件:

{
"presets":["es2015","react"]
}

package.json文件:

{
"name": "react",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "webpack",
"start": "webpack-dev-server --progress --colors --content-base ./build --history-api-fallback"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.24.1",
"babel-loader": "^6.4.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"css-loader": "^0.28.0",
"json-loader": "^0.5.4",
"react": "^15.5.3",
"react-dom": "^15.5.3",
"react-router": "^2.8.1",
"style-loader": "^0.16.1",
"webpack": "^2.3.3",
"webpack-dev-server": "^2.4.2"
},
"dependencies": {
"babel-core": "^6.24.1",
"babel-loader": "^6.4.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"css-loader": "^0.28.0",
"file-loader": "^0.11.1",
"json-loader": "^0.5.4",
"react": "^15.5.4",
"react-dom": "^15.5.4",
"react-router": "^2.8.1",
"resolve-url-loader": "^2.0.2",
"style-loader": "^0.16.1",
"url-loader": "^0.5.8",
"webpack": "^2.3.3",
"webpack-dev-server": "^2.4.2"
}
}

安裝的插件

cnpm i -S webpack react react-dom babel-core babel-loader babel-preset-es2015 babel-preset-react react-router@2 css-loader style-loader file-loader

遇到的bug

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章