夺命雷公狗-----React---22--小案例之react经典案例todos(完成数据的遍历)
在很多前端框架中todos都是一个小的参考例子,在react中当然也是不例外的,先来看看最终的效果先。。。

这个就是官方的例子,我们先来分析下他是由那及格组建组合成的。。。

再来分析下他是的数据最终是由那些地方过来的。。。

由于我们在react里面传递的参数都是不能跨级传递的,都是通过一级级往下传递的,如下图所示:


然后再Ul组建里面用props来进行传递,因为是数组我们可以使用数组的方式进行传递。。

但是这种方式只要懂得编程的朋友们应该都知道是不科学的,当然react也不列外,他给我们开发者预留了map方法来进行数据遍历

然后在对数据进行输出:

效果好像出现了。。。

在分析下原理...

首先用getInitialState来对属性进行模拟,
然后在Zong组建里面用<Ul todos={this.state.todos} /> 对她进行传递到ul里面,
然后在Ul里面用map方法对数据进行传递到li里面,
然后在li里面通过{this.props.todo.text}进行取出
上面图片的代码只是伪代码,可以能有个别地方没修正,测试代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="./js/react.js"></script>
<script src="./js/react-dom.js"></script>
<script src="./js/browser.min.js"></script>
</head>
<body>
<div id="dome"></div>
<script type="text/babel">
//搜索区域
var Ck = React.createClass({
render:function(){
return(
<div>
<input type="text" placeholder="你要干嘛?" />
</div>
);
}
});
//列表项区域
var Lists = React.createClass({
render:function(){
return(
<li>
<label>
<input type="checkbox" checked={this.props.todo.isDown} />
{this.props.todo.text}
</label>
<button>删除</button>
</li>
);
}
});
//列表框区域
var Ul = React.createClass({
render:function(){
return(
<ul>
{
this.props.todos.map(function(item,index){
return <Lists todo={item} key={index} />
})
}
</ul>
);
}
});
//状态组建
var Status = React.createClass({
render:function(){
return(
<div>
<input type="checkbox" />
3 已完成 / 3 总数
<button>清除已完成</button>
</div>
);
}
});
//总组建
var Zong = React.createClass({
getInitialState:function(){
return {
todos :[
{text:'6点起床',isDown:true},
{text:'7点出门',isDown:true},
{text:'8点吃早饭',isDown:false},
{text:'9点上班',isDown:true},
{text:'12点下班',isDown:false}
],
isAllChecked: false
}
},
render:function(){
return(
<div>
<Ck />
<Ul todos={this.state.todos} />
<Status />
</div>
);
}
});
ReactDOM.render(
<Zong />,
document.getElementById('dome')
);
</script>
</body>
</html>
夺命雷公狗-----React---22--小案例之react经典案例todos(完成数据的遍历)的更多相关文章
- 夺命雷公狗—angularjs—22—bind改指向和传参方式
在angularjs中的传参的jquery的方式是极度相似的噢,而且还可以通过bind来改变指向 <!DOCTYPE html> <html lang="en" ...
- 夺命雷公狗-----React---12--添加类和样式
<!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...
- 夺命雷公狗-----React---11--添加css样式的方法
<!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...
- 夺命雷公狗-----React---10--组建嵌套进行数据遍历
先写一个组建... 然后进行嵌套.. <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- 夺命雷公狗-----React---9--map数据的遍历
比如我们要实现的是这种效果: 用这种方法来写,她只能写死在哪,没啥意思,所以我们定义一个数据,然后来测试下map方法对她遍历出来的数据 <!DOCTYPE html> <html l ...
- 夺命雷公狗-----React---8--react官方提供的组建实现双向绑定
首先要引入她.. <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 夺命雷公狗-----React---7--组建的状态props和state
props:组建初始要渲染的数据,他是不可以改变的 state:组建状态发生改变,调用render重新渲染数据 我们来写一个例子: <!DOCTYPE html> <html lan ...
- 夺命雷公狗-----React---6--props多属性的传递
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 夺命雷公狗-----React---5--props对象的传递
提示:props的值是不可以改变的... <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- 夺命雷公狗-----React---4--props变量的传递
提示:props的值是不可以改变的... <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
随机推荐
- React Native开发之npm start加速
在Windows下好不容易安装好React Native环境之后,运行npm start,结果就是无限被等待,快的话160秒(将近3分钟啊....) 而Mac下因为有watchman所以是飞一样的速度 ...
- HTLM5表单
1.HTML5占位符文本 使用placeholder可以给文本框,搜索框添加提示性文本 <input type="text" name="url" p ...
- Ubuntu换源
转自: http://wiki.ubuntu.org.cn/index.php?title=Qref/Source&variant=zh-cn 不同的网络状况连接以下源的速度不同, 建议在添加 ...
- Unity3D设计原则
原则1:单一职责 原则2:里氏替换原则(子类扩展但不改变父类功能) 原则3:依赖倒置原则 原则4:接口隔离原则 原则5:迪米特法则(最少知道原则) 原则6:开闭原则 原则1:单一职责原则 说到单一职责 ...
- Intellij如何设置编译后自动重新加载class文件?
前段时间突然发现Intellij不能自动重新加载类了,每次编译后都要重新启动项目,才能显示更新效果,后来网上查询Intellij下如何配置热部署,都说是要配置构件,然后在web容器的编辑页面选择upd ...
- js模版引擎handlebars.js实用教程——为什么选择Handlebars.js
返回目录 据小菜了解,对于java开发,涉及到页面展示时,比较主流的有两种解决方案: 1. struts2+vo+el表达式. 这种方式,重点不在于struts2,而是vo和el表达式,其基本思想是: ...
- PowerGUI错误-Microsoft SharePoint is not supported with version 4 of the Microsoft .Net Runtime
PowerGUI是个写powershell的神器,相比于PowerShell ISE,它那断点和按步追踪的能力不知让多少脚本狂们神魂颠倒.. 今天我也下载了一个放到测试环境里打算玩玩,结果出师不利,一 ...
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(三)
角色管理功能: 界面部分: <%@ Page Title="" Language="C#" MasterPageFile="~/Site.mas ...
- AI PRO I 第4章
Behavior Selection Algorithms An Overview Michael Dawe, Steve Gargolinski, Luke Dicken, Troy Humphre ...
- C# 根据年月日获取星期几方法
#region 根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);) /// <summary> /// 根据年月日计算星期几(Label ...