博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React学习笔记—简易信息管理,实现CUD
阅读量:6125 次
发布时间:2019-06-21

本文共 4061 字,大约阅读时间需要 13 分钟。

需求

利用React实现一个简易的信息管理系统。

图片描述

写的不太好,欢迎熟悉React的大神来找茬。真心感激!

分析

编写React就是不断构建组件的过程,首先要根据需求进行UI的划分:

-StudentBox  -StudentList    -Student  -StudentForm

编码

服务端

没有用到服务器,采用了数据模拟的方式

var id = 41060122; //添加信息时自增长IDvar data = [    {        id: 41060120,        name: 'Mary',        age: 20    },    {        id: 41060121,        name: 'Jacky',        age: 18    },    {        id: 41060122,        name: 'Helen',        age: 21    }];

页面

    
React

组件

StudentBox

var StudentBox = React.createClass({    getInitialState: function () {        return {data: data};    },    //删除    handleDelete: function (index) {        this.state.data.splice(index, 1);        this.forceUpdate();    },    //更新    handleUpdate: function (student) {        this.state.data.forEach(function (item) {            if (item.id === student.id) {                _.extend(item, student);            }        });        this.forceUpdate();    },    //新增    handleSave: function (student) {        this.state.data.push(_.extend(student, {id: ++id}));        this.forceUpdate();    },    render: function () {        return (            

Student Messages

) }});

StudentList

var StudentList = React.createClass({    render: function () {        var handleDelete = this.props.delete;        var handleUpdate = this.props.update;        return (            
})}
{this.props.data.map(function (student, index) { return
index number name age operation
) }});

Student

var Student = React.createClass({    getInitialState: function () {        return {isEdit: false};    },    handleEdit: function () {        this.setState({isEdit: !this.state.isEdit});    },    handleDelete: function (index) {        this.props.delete(index);    },    handleUpdate: function (id) {        var name = React.findDOMNode(this.refs.name).value.trim();        var age = React.findDOMNode(this.refs.age).value.trim();        if (!name || !age) {            return;        }        this.props.update({            id: id,            name: name,            age: age        });        this.handleEdit();    },    render: function () {        var index = this.props.index;        var student = this.props.data;        var operations = this.state.isEdit ?            
:
; var name = this.state.isEdit ? : student.name; var age = this.state.isEdit ? : student.age; return ( {index} {student.id} {name} {age} {operations} ) }});

StudentForm

var StudentForm = React.createClass({    handleSubmit: function (e) {        e.preventDefault();        var name = React.findDOMNode(this.refs.name).value.trim();        var age = React.findDOMNode(this.refs.age).value.trim();        if (!name || !age) {            return;        }        this.props.save({            name: name,            age: age        });    },    render: function () {        return (            
) }});

渲染

React.render(    
, document.body);

转载地址:http://npbua.baihongyu.com/

你可能感兴趣的文章
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>
第k小数
查看>>
构建之法阅读笔记三
查看>>
写给对前途迷茫的朋友:五句话定会改变你的人生
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>