`
Turbo12138
  • 浏览: 45147 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

加react框架订餐大师

 
阅读更多

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=0
        var 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框架 React框架 React框架

    React框架 React框架 React框架

    React框架:深度解析与应用场景

    React框架:深度解析与应用场景 仅供学习交流! 后续会持续分享相关资源,记得关注哦! React框架:深度解析与应用场景 React框架:深度解析与应用场景 React框架:深度解析与应用场景 React框架:深度解析与应用...

    React框架基础.pptx

    react框架基础讲解,react的使用规范及react的起源和发展历程,详细介绍react的组件使用,数据传递等。

    react框架代码

    React框架是目前Web开发中最流行的JavaScript库之一,由Facebook维护并开源。它主要用来构建用户界面,特别是单页面应用程序(SPA)。React的核心理念是组件化,它允许开发者将UI拆分成独立、可重用的组件,每个组件...

    基于react的企业后台管理开发框架.zip

    基于react框架的企业后台管理开发框架基于react框架的企业后台管理开发框架基于react框架的企业后台管理开发框架基于react框架的企业后台管理开发框架基于react框架的企业后台管理开发框架基于react框架的企业后台...

    react 框架搭建

    React框架搭建是一个重要的前端开发步骤,它涉及到一系列的技术和工具,包括React库本身、React-Redux用于状态管理以及可能的Express.js用于后端服务。在这个过程中,开发者需要掌握如何配置项目环境,安装必要的...

    react框架搭建源码

    React框架是目前非常流行的前端开发库,主要用于构建用户界面,尤其适合单页应用程序(SPA)。在本项目中,我们基于React、MobX状态管理和Ant Design UI库搭建了一个基础的项目框架,非常适合新手入门学习。 首先,...

    一个基于 umi 的移动 React 框架

    【标题】:“一个基于 umi 的移动 React 框架” 在现代Web应用开发领域,React作为一款流行的JavaScript库,已经成为了构建用户界面的首选工具。然而,仅使用React进行大型项目的开发可能会变得复杂,因此出现了...

    什么是React框架以及学习React框架的意义是什么

    ### 什么是React框架 React框架,也常被称为React.js或简称为React,是一个由Facebook开发并维护的开源JavaScript库,主要用于构建用户界面。React自2013年首次发布以来,迅速成为前端开发领域的核心工具之一,其...

    react-React幻灯片框架

    React的UI框架,如Ant Design、Material-UI、Chakra UI等,都提供了预设样式和布局的幻灯片组件,但如果你需要定制特定的幻灯片样式或功能,可能会选择创建自定义的React幻灯片框架。在"react-presents-master"这个...

    一个基于react框架的资源文件

    一个基于react框架的资源文件 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是...

    react框架搭建.xmind

    react框架搭建.xmind

    React框架课程套装.txt

    ### React框架课程套装知识点解析 #### 一、React框架简介 React 是一个用于构建用户界面的 JavaScript 库,尤其适用于单页应用 (SPA) 的开发。它由 Facebook 开发并维护,自 2013 年开源以来,迅速成为前端开发...

    React框架学习.html

    React框架学习

    流行的前端框架都有哪些?详细讲解React前端框架

    详细讲解React前端框架; 流行的前端框架都有哪些?详细讲解React前端框架; 流行的前端框架都有哪些?详细讲解React前端框架; 流行的前端框架都有哪些?详细讲解React前端框架; 流行的前端框架都有哪些?详细讲解...

    react框架得路由最基本得案例

    react框架得路由最基本得案例 react框架得路由最基本得案例 react框架得路由最基本得案例 react框架得路由最基本得案例 react框架得路由最基本得案例 react框架得路由最基本得案例 react框架得路由最基本得案例 ...

    基于React框架 仿钉钉审批流、工作流源代码

    在IT行业中,React框架是开发高效、高性能用户界面的首选工具之一,尤其在构建复杂的Web应用程序时。"基于React框架 仿钉钉审批流、工作流源代码"这个项目,显然是利用React的强大功能来模拟和实现类似钉钉的审批...

    基于React框架实现的web端电商系统源码(课设新项目).zip

    基于React框架实现的web端电商系统源码(课设新项目).zip基于React框架实现的web端电商系统源码(课设新项目).zip基于React框架实现的web端电商系统源码(课设新项目).zip基于React框架实现的web端电商系统源码(课设...

    Sortable-React在React框架下,基于TypeScript语法下的React组件,使用_so

    Sortable-React在React框架下,基于TypeScript语法下的React组件,使用_sortable-react

    React框架资源《word文档》

    React框架资源《word文档》 React框架资源可以大致分为以下几类: 一、官方文档与教程 React官方文档:React团队维护的官方文档是学习React框架的首选资源。最新的官方文档已经迁移到https://react.dev/。新文档...

Global site tag (gtag.js) - Google Analytics