设为首页 收藏本站
查看: 1137|回复: 0

[经验分享] Node.js + React + MongoDB 实现 TodoList 单页应用

[复制链接]

尚未签到

发表于 2017-12-14 19:35:29 | 显示全部楼层 |阅读模式
1 import React, { Component, PropTypes } from 'react'  
  2 import ReactDOM from 'react-dom'
  
  3 import $ from 'jquery'
  
  4 import TodoList from './comps/todo-list'
  
  5

  
  6>  
  7
  
  8     constructor(props) {
  
  9         super(props);
  
10         this.state = {
  
11             todoList: [],
  
12             showTooltip: false  // 控制 tooltip 的显示隐藏
  
13         }
  
14     }
  
15     
  
16     componentDidMount () {
  
17         // 获取所有的 todolist
  
18         this._getTodoList();
  
19       }
  
20     
  
21     // 获取 todolist
  
22     _getTodoList () {
  
23         const that = this;
  
24           $.ajax({
  
25               url: '/getAllItems',
  
26               type: 'get',
  
27               dataType: 'json',
  
28               success: data => {
  
29                 const todoList = that.todoSort(data)
  
30                 that.setState({
  
31                     todoList
  
32                 });
  
33               },
  
34               error: err => {
  
35                 console.log(err);
  
36             }
  
37           });
  
38     }
  
39     
  
40     // 添加 todo
  
41     _onNewItem (newItem) {
  
42         const that = this;
  
43         $.ajax({
  
44             url: '/addItem',
  
45             type: 'post',
  
46             dataType: 'json',
  
47             data: newItem,
  
48             success: data => {
  
49                 const todoList = that.todoSort(data);
  
50                 that.setState({
  
51                     todoList
  
52                 });
  
53             },
  
54             error: err => {
  
55                 console.log(err);
  
56             }
  
57         })
  
58     }
  
59
  
60     // 删除 todo
  
61     _onDeleteItem (date) {
  
62         const that = this;
  
63         const postData = {
  
64             date: date
  
65         };
  
66         $.ajax({
  
67             url: '/deleteItem',
  
68             type: 'post',
  
69             dataType: 'json',
  
70             data: postData,
  
71             success: data => {
  
72                 this._getTodoList();
  
73             },
  
74             error: err => {
  
75                 console.log(err);
  
76             }
  
77         })
  
78     }
  
79     
  
80     // 对 todolist 进行逆向排序(使新录入的项目显示在列表上面)
  
81     todoSort (todoList) {
  
82         todoList.reverse();
  
83         return todoList;
  
84     }
  
85
  
86     // 提交表单操作
  
87     handleSubmit(event){
  
88
  
89         event.preventDefault();
  
90         // 表单输入为空验证
  
91         if(this.refs.content.value == "") {
  
92             this.refs.content.focus();
  
93             this.setState({
  
94                 showTooltip: true
  
95             });
  
96             return ;
  
97         }
  
98         // 生成参数
  
99         var newItem={
  
100             content: this.refs.content.value,
  
101             date: (new Date().getMonth() +1 ) + "/"
  
102                 + new Date().getDate() + " "
  
103                 + new Date().getHours() + ":"
  
104                 + new Date().getMinutes() + ":"
  
105                 + new Date().getSeconds()
  
106         };
  
107         // 添加 todo
  
108         this._onNewItem(newItem)
  
109         // 重置表单
  
110         this.refs.todoForm.reset();
  
111         // 隐藏提示信息
  
112         this.setState({
  
113             showTooltip: false,
  
114         });
  
115     }
  
116
  
117       render() {
  
118           return (

  
119               <div>
  
120                 <h2>
  
121                 <form>
  
122                     <input ref="content" type="text" placeholder="Type content here...">  
123                     { this.state.showTooltip &&

  
124                         <span>  
125                     }
  
126                 </form>
  
127                 <TodoList todoList={this.state.todoList} onDeleteItem={this._onDeleteItem.bind(this)} />
  
128               </div>
  
129           )
  
130       }
  
131 }
  
132
  
133 export default Todo;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424143-1-1.html 上篇帖子: MongoDB应用案例:使用 MongoDB 存储日志数据 下篇帖子: mongodb 3.4 集群搭建:分片+副本集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表