React框架确实能简化代码,可以与不加框架的作对比,大家看一下

html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title></title><script src="../build/browser.min.js"></script><script src="../build/react.js"></script><script src="../build/ReactRouter.min.js"></script><script src="../build/react-dom.js"></script><script language='javascript' src="../build/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="../CSS/Index.css"><script language='javascript' src="../build/underscore-min.js"></script><script language='javascript' src="../build/underscore.js"></script><!--<script src="../REACT/build/JSXTransformer.js" type="text/jsx"></script>--><script type="text/babel" src="../JS/Order.js"></script><script type="text/babel" src="../JS/Index.js"></script><script type="text/babel" src="../JS/Customer.js"></script><script type="text/babel" src="../JS/Resaturant.js"></script><script type="text/babel" src="../JS/FoodList.js"></script><script type="text/babel" src="../JS/ViewOrder.js"></script>
</head>
<body>
<script type="text/babel" src="../JS/ReactRouter.js"></script>
<div id="root"></div>
</body>
</html>

JS:

(1)Customer.js

/*** Created by lixuefeng on 16-1-16.*/
window.CustomerList=React.createClass({getInitialState:function(){return {customers:[]}},componentDidMount:function(){var self=this;$.ajax({url:"../JSON/Customers.json",dataType:"json",async:true,success:function(data){console.log(data)self.setState({customers: data.man})}})},back_to_order:function(){this.props.history.pushState(null,'/Order')},handleClick:function(data){localStorage.setItem('man',data)this.props.history.pushState(null,'/Order')},render: function() {var customersHtml= _.map(this.state.customers,function(men){return (<li className='apper'><div className='css_button_style' onClick={this.handleClick.bind(this,men)}>{men}</div></li>)},this)return (<div><div className='order'><li className='apper'><button className='back' onClick={this.back_to_order}>back</button>选人</li></div><div className='distan'>{customersHtml}</div></div>)}
});
//ReactDOM.render(
//    <CustomerList/>,
//    document.getElementById("root")
//);

(2)FoodList.js

/*** Created by lixuefeng on 16-1-17.*/
window.FoodList=React.createClass({getInitialState:function(){return {foods:[]}},componentDidMount:function(){var self=this;$.ajax({url:"../JSON/GoodsList.json",dataType:"json",async:true,success:function(item){console.log(item)self.setState({foods:item.food_lists[localStorage.getItem("shop")]})}})},back_to_order:function(){this.props.history.pushState(null,'/Order')},handleClick:function(foods,price){localStorage.setItem("food",foods)localStorage.setItem("mon",price)this.props.history.pushState(null,'/Order')},render:function(){var foodListHtml=_.map(this.state.foods,function(item){return(//console.log(item)<li className='apper'><div className='choose-style' onClick={this.handleClick.bind(this,item.food,item.price)}>{item.food}<p className='css_font_style'><p className='same_body'>¥{item.price}</p></p></div></li>)},this)return (<div><div className="order"><li className="apper"><button className="back" onClick={this.back_to_order}>back</button>选套餐</li></div>{foodListHtml}</div>)}})
//ReactDOM.render(
//    <FoodList/>,
//    document.getElementById("root")
//);

(3)Restaurant

/*** Created by lixuefeng on 16-1-17.*/
window.Resaturant=React.createClass({getInitialState:function(){return {resaturant:[]}},componentDidMount:function(){var self=this;$.ajax({url:"../JSON/Rest.json",dataType:"json",async:true,success:function(item){console.log(item)self.setState({resaturant:item.rest})}})},back_to_order:function(){this.props.history.pushState(null,'/Order')},handleClick:function(data){localStorage.setItem("shop",data)this.props.history.pushState(null,'/Order')},render:function(){var resaturant_list= _.map(this.state.resaturant,function(shop){return (<li className='apper'><div className='css_button_style' onClick={this.handleClick.bind(this,shop)}>{shop}</div></li>)},this)return (<div><div className='order'><li className='apper'><button className='back' onClick={this.back_to_order}>back</button>选餐厅</li></div><div className='distan'>{resaturant_list}</div></div>)}})
//ReactDOM.render(
//    <Resaturant/>,
//    document.getElementById("example")
//);

(4)Index.js

/*** Created by lixuefeng on 16-1-17.*/
window.Index=React.createClass({showOrder:function(){this.props.history.pushState(null,'/Order')},viewOrder:function(){this.props.history.pushState(null,'/ViewOrder')},render:function(){return(<div><div className="order">订餐</div><div className="choose" onClick={this.showOrder}>帮订餐</div><div className="choose" onClick={this.viewOrder}>看订单</div></div>)}
})
//ReactDOM.render(
//    <Index/>,
//    document.getElementById("root")
//);

(5)Order.js

/*** Created by lixuefeng on 16-1-17.*/
window.Order = React.createClass({getInitialState:function(){return {Foods:"",Shops:"",Mans:""}
},componentDidMount:function(){if (!(document.getElementById("rest").value != "" && document.getElementById("name").value != "" && document.getElementById("food").value != "")) {$("#test").attr({"disabled":"disabled"})}else{$("#test").removeAttr("disabled")}this.setState({Foods:localStorage.getItem("food"),Shops:localStorage.getItem("shop"),Mans:localStorage.getItem("man")});},getInfo: function() {var all_info = {man: localStorage.getItem("man"),shop: localStorage.getItem("shop"),mon: localStorage.getItem("mon"),food: localStorage.getItem("food"),};var local_info=JSON.parse(localStorage.getItem("infor")) || [];local_info.push(all_info);localStorage.setItem("infor", JSON.stringify(local_info));},cleanItem:function(){console.log("-------start-------------")console.log(this.state.Mans)console.log("------------------")this.setState({Foods:"",Shops:"",Mans:""});console.log("------------------")console.log(this.state.Mans)console.log("-------end------------")localStorage.removeItem("man");localStorage.removeItem("shop");localStorage.removeItem("food");localStorage.removeItem("mon")},handleClick:function() {console.log("------------------")this.getInfo();this.cleanItem();},back_to_order:function(){this.props.history.pushState(null,'/')},back_to_customer:function() {this.props.history.pushState(null,'/Customer')},beck_to_resaturant:function () {this.props.history.pushState(null,'/Resaturant')},beck_to_foodlist:function () {this.props.history.pushState(null, '/FoodList')},render:function(){return(<div><div className="order"><li className="apper"><button className="back" onClick={this.back_to_order}>back</button>订单显示</li></div><div className="top_distance">  </div><div className="font_distance">人:</div><input className="input_font" id="name" value={this.state.Mans} name="input_one" type="text" disabled/><div id="bin_go" type="button" className="button_order" onClick={this.back_to_customer}>选人 </div><div className="font_distance">餐厅:</div><input className="input_font" id="rest" value={this.state.Shops} name="shop_input" type="text" disabled/><div id="bin_way" className="button_order" type="button" onClick={this.beck_to_resaturant}>选餐厅</div><div className="font_distance">套餐:</div><input className="input_font" id="food" value={this.state.Foods} name="input_food" type="text" disabled/><div id="bin_stop" className="button_orders" onClick={this.beck_to_foodlist}>选套餐</div><div id="test" className="button_ensure" onClick={this.handleClick} >确认</div></div>)}
})

(6)ViewOrder.js

/*** Created by lixuefeng on 16-1-17.*/
window.View=React.createClass({getInitialState:function(){return{foods:[],customers:[],}},componentDidMount:function(){this.setState({foods:JSON.parse(localStorage.getItem("infor")||"[]")});var self=this;$.ajax({url:"../JSON/Customers.json",dataType:"json",async:true,success:function(item){self.setState({customers:item.man})}})},back_to_order:function(){this.props.history.pushState(null,'/')},render:function(){console.log(this.state.foods)var order_num = [];var order_list_html= _.map(this.state.foods,function(item){if (order_num.indexOf(item.man) == -1) {order_num.push(item.man);}console.log(order_num.length)console.log(order_num)var change_color=(item.mon>12.00)?"red":"black";return (<div><div className='someone'><span className='return-na'>{item.man}</span><span className='return-pr'>{item.shop+" "+item.food}</span><span className='return' id="price_num" style={{color:change_color}}>¥{item.mon}</span></div></div>)})var no_order_array=[];var no_order_num= _.map(this.state.customers,function(item){if (order_num.indexOf(item) == -1) {no_order_array.push(item);}});var no_order_array_html= _.map(no_order_array,function(names){return (<div className='someone'><span className='per_no'>{names}</span></div>)
})var sum=0var sum_price= _.map(this.state.foods,function(some){var cost=JSON.parse(some.mon)sum+=cost
})return (<div><div className="order"><li className="apper"><button className="back" onClick={this.back_to_order}>back</button>订单显示</li></div><div className="num">&nbsp;&nbsp;{order_num.length}人已定</div>{order_list_html}<div className="num">&nbsp;&nbsp;{no_order_array.length}人未订</div>{no_order_array_html}<div className="last">{order_num.length}人已定, {no_order_array.length}人未订, 总计{sum.toFixed(2)}元</div></div>)},
})
//ReactDOM.render(
//    <View/>,
//    document.getElementById("root")
//);//{order_list_html}
//{no_order_array_html}
//<div className="last">{order_num.length} 人已定, {no_order_array.length}人未订, 总计{sum}元
//</div>

(7)ReactRouter.js

/*** Created by lixuefeng on 16-1-26.*/
var ReactRouter = window.ReactRouter;
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var routes=(<Router><Route path="/" component={window.Index}/><Route path="Order" component={window.Order}/><Route path="Customer" component={window.CustomerList}/><Route path="Resaturant" component={window.Resaturant}/><Route path="FoodList" component={window.FoodList}/><Route path="ViewOrder" component={window.View}/></Router>
);
ReactDOM.render(routes,document.getElementById("root"));

Json:

1.

{"man" : ["赵大","钱二","张三","李四","王五","赵六"]
}

2.

{"food_lists": {"KFC": [{"food": "田园脆鸡堡","price": "10.00"},{"food": "黄金咖喱猪排饭","price": "23.50"}],"7-11": [{"food": "田园脆鸡堡","price": "10.00"},{"food": "黄金咖喱猪排饭","price": "23.50"},{"food": "意式肉酱肉丸饭","price": "16.00"},{"food": "老北京鸡肉卷","price": "14.00"}],"成都小吃": [{"food": "田园脆鸡堡","price": "10.00"},{"food": "黄金咖喱猪排饭","price": "23.50"},{"food": "意式肉酱肉丸饭","price": "16.00"},{"food": "老北京鸡肉卷","price": "14.00"},{"food": "劲脆鸡腿堡","price": "15.00"}]}
}

3.

{"rest": ["KFC","7-11","成都小吃"]
}

加react框架订餐大师相关推荐

  1. Android高效异步图片加载框架

    概述 Android高效异步图片加载框架:一个高效的异步加载显示的图片加载框架,同时具备图片压缩,缓存机制等特性. 详细 代码下载:http://www.demodashi.com/demo/1214 ...

  2. jsx 调用php,JavaScript_JavaScript的React框架中的JSX语法学习入门教程,什么是JSX? 在用React写组件的 - phpStudy...

    JavaScript的React框架中的JSX语法学习入门教程 什么是JSX? 在用React写组件的时候,通常会用到JSX语法,粗看上去,像是在Javascript代码里直接写起了XML标签,实质上 ...

  3. [译] 项目什么时候需要 React 框架呢?

    本文讲的是[译] 项目什么时候需要 React 框架呢?, 原文地址:When Does a Project Need React? 原文作者:CHRIS COYIER 译文出自:掘金翻译计划 译者: ...

  4. anu,一个无痛实践React的迷你React框架

    近年来,冒出大量MVVM框架,但它几乎无一例外依赖于babel, webpack等编译或手脚架,这让小公司出身的前端们望洋兴叹.因此小城市的前端们,没有高手带着,许多培训班出身,或自学成才转行,如果引 ...

  5. 前端React框架基础语法

    一.ReactDOM.render()方法 ReactDOM.render()方法是React框架中最最最基础的方法,这个方法的作用是将模板转化为HTML的语法,然后插入到指定的 DOM 节点中. & ...

  6. React框架的学习

    前端-React框架 一.环境搭建 使用 create-react-app 快速构建 React 开发环境 二.react目录以及文件 目录结构 组件基础模板 三.React的知识点 1.JSX语法 ...

  7. react框架学习总结(纯干货)

    首先,我先给出我学习react框架的参考教程,以下内容都是我依据此教程的个人总结.react教程 React与JSX: function Square(props) {return (<butt ...

  8. React框架新手入门

    目录 React框架简介 特点 创建一个react项目 成功后 React入门案例 渲染语法 事件 函数类 ​ React框架简介 react是Facebook公司产品用于创建用户界面Javascri ...

  9. React框架发展史

    原文地址: https://www.deaboway.com/react框架发展史.html#.YHr1L0j7QZE React开源地址:https://facebook.github.io/rea ...

最新文章

  1. pandas使用to_dict方法把datafraem保存为字典形式
  2. php stortime,文件存储 - Laravel 5.8 中文文档手册 - php中文网手册
  3. 必会系列之 filter 和 interceptor 的区别
  4. windows 下安装 scrapy报错:error: Unable to find vcvarsall.bat
  5. 涨知识!外贸中,船公司S/O(订舱单)文件英文解释!
  6. 如何在Chrome浏览器中创建账户?
  7. Bash中命令连接符的用法——一次执行多个命令-转
  8. 关于安卓模拟器的小故事
  9. crontab——Linux 下的定时任务
  10. jQuery:自学笔记(3)——操作DOM
  11. linux work有关的命令,Linux执行后台work相关
  12. 网络流量分析利器-可视化网络-netflow【1】-基础原理
  13. 怎么把wav文件改成mp3?
  14. 房屋登记官考核模拟题(6)
  15. 臀部肌群:肌肉图示和英文名称
  16. mysql explain不准确_mysql explain预估剖析
  17. 手机android内存不足怎么办,安卓手机内存不足怎么办 安卓手机内存不足怎么清理...
  18. 模电数电单片机综合开发系统实验装置QY-MS535K
  19. Java *2.22(财务应用:货币单位)改写程序清单2-10,解决将double转int可能会造成精度损失问题。以整数值作为输入,其最后两位代表的是美分币值。例如:1156就表示11美元56美分。
  20. keras+theano安装教程

热门文章

  1. qrect的使用 qt_qt-----qt翻译QRect矩形类(上)
  2. electron-vue全局变量
  3. 如何处理linux Ubuntu网络不通的问题
  4. 极光推送——App推送
  5. sql 添加列、删除列、修改列属性以及大小
  6. JAVA打印流PrintStream 常用方式
  7. Scrapy爬虫方法
  8. 通讯录的实现(C语言版)
  9. 10-131 4-3 查询速度低于任何PC的便携式电脑
  10. PolarDB-X 2.1 新版本发布 让“MySQL 原生分布式”触手可及