React组件开发经典案例--todolist

点开查看代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>todolist2</title>
    <link rel="stylesheet" href="">
    <script type="text/javascript" src="../build/react.js"></script>
    <script type="text/javascript" src="../build/react-dom.js"></script>
    <script type="text/javascript" src="../build/browser.min.js"></script>
</head>
<body>
    <div id="box">

    </div>
    <script type="text/babel">
        var Todolist=React.createClass({
                //初始化状态
                getInitialState:function(){
                    return({
                        collection:[]})
                },
                render:function(){
                    return(
                        <div>
                            <input type="text" name="" ref="yzxText"/>
                            <input type="button" name="" value="add" onClick={this.handleClick}/>
                            <List items={this.state.collection} delEvent={this.DelClick}>
                            </List>
                        </div>

                    )
                },
                handleClick:function(){
                    this.state.collection.push(this.refs.yzxText.value);
                    this.setState({
                    collection: this.state.collection
                    })
                },
                DelClick:function(index){
                    this.state.collection.splice(index,1);
                    this.setState({
                    collection: this.state.collection
                    })
                }
        });
        var List=React.createClass({
        render:function(){
        var _this=this;
            return(
                    <ul>
                    {
                      this.props.items.map(function(item,index){
                        return    <li key={index}>{item}
                                <input type="button" name="" value="del" onClick={
                                _this.handleDelclick.bind(_this,index)}/>
                            </li>
                         })
                    }
                    </ul>

            )
        },
        handleDelclick:function(index){
            this.props.delEvent(index);
        }
        })
        ReactDOM.render(<Todolist></Todolist>,document.getElementById(‘box‘));
    </script>
</body>
</html>

*此案例重点在React的父子组件之间数据的传递。

*父组件影响子组件时,通常通过设置状态,子组件设置一个属性来接收这一状态的值。

*子组件要影响父组件时,通过改变自身属性(这里的属性值为一个函数,这样就和父组件产生了联系),这个函数里给父组件设置新的状态的值。

*在动态获取数据渲染dom时,通常需要通过map映射数组,return结果,这个结果通常就是我们需要映射出的节点。这里this指向是window,而不是组件本身,所以通常需要在渲染时先保存this。

*要获取事件的索引值并对一个函数传参但不执行这个函数时,在方法名后.bind(_this,index)来改变this的指向并且给函数传入index参数。

时间: 2024-10-12 17:28:27

React组件开发经典案例--todolist的相关文章

react组件开发规范(一)

这是通过修改项目运行在Google上时的警告,总结的的部分react组件开发规范: (1)编写组件时,一定要写PropTypes,切莫为了省事儿而不写! 如果一个Props不是required,一定在getDefaultProps中设置它: React.PropTypes主要用来验证组件接收到的props是否为正确的数据类型,如果不正确,控制台(console)中就会出现对应的警告(warning). 所以,为了规范我们开发,减少不必要的警告,这个要注意写上,而且保证类型写对. (2)map遍历

Visual C NET数据库开发经典案例解析 附书光盘免费下载

为了让更多的朋友学得更快我共享出这代码(由于文件太大,我只上传了第二章人事管理的代码): 下载地址:http://www.cnblogs.com/Files/meta/Chap2.rar 配套光盘使用说明 (1)  本光盘是<Visual C#.NET数据库开发经典案例解析>的配套光盘,与图书一起发行,不得单独出售. (2)  本光盘的主要内容包括各章示例程序的代码及数据库文件.光盘的说明文件为Readme.txt,就是本文件. (3)  示例程序是按照它们出现的章顺序编排的. (4)  光盘

React组件开发注意事项

0.state的设定原则,如果render里用不到,则就不应该是一个state. 1.数组遍历时,用每一条数据的唯一标识作为key,尽量不要使用遍历的索引值作为key,如果它们从不重新排序,它们工作也很好,但是如果存在重新排序,性能将会很差. 2.处理事件,推荐使用属性初始化语法,如下: class LoggingButton extends React.Component { // 这个语法确保 `this` 绑定在 handleClick 中. // 警告:这是 *实验性的* 语法. han

wn-cli 像React组件开发一样来开发微信小程序

项目地址:wn-cli wn-cli 名字由来:wn -> weapp native 取第一个字母 Install npm install wn-cli --save-dev // 或者 yarn add wn-cli --dev Usage // 构建 npx wn ./examples ./dist // 监听模式 npx wn ./examples ./dist -w 如果你遇到一个错误,让拷贝 wn.js 文件,请按提示信息将 node_modules 中的 node_modules/w

React组件开发

目录: 属性:props 内联样式 状态记忆 : state 生命周期 访问DOM 表单输入 承接快速入门篇:http://www.cnblogs.com/jasonnode/p/4444504.html 属性 : props 组件应该提供一些属性供开发者在不同的场景下可以对组件实例元素的行为 外观进行调整,这样可以提高组件的利用效率. 在React中,使用props字段访问实例元素的属性. 例如,在下面的JSX片段中,EzLampComp组件的实例元素有一个属性onoff: React.ren

React组件略讲

React是前端组件化开发的开山鼻祖,这种开发方式彻底解决了的前端组件复用的痛点.今天,就来研究一下React组件开发. 前端同学一般都会从Vue入门,因为Vue使用的<template>的组件开发方式让前端人员更容易的平滑过渡.Vue的组件很简单,一般来说,一个.vue文件就是一个组件.就像webpack的模块化开发,一个文件就是一个组件.我们在使用组件时也很容易,通过 ES6 的import导入.注册(components),就可以直接使用. 上面简单说了Vue的组件模式,其实,React

结合 ES6+ 开发 React 组件

这是 Steven Luscher 写的一篇关于 React 的文章,Steven Luscher 擅长使用 React 和 GraphQL 构建应用. 原文地址:http://babeljs.io/blog/2015/06/07/react-on-es6-plus/ 当重新设计 Instagram Web 的时候,使用了一些 ES6+ 的特性来编写 React 组件.在这里简要的说一下这些语言新特性对 React 应用的开发有什么影响,这些 ES6+ 特性使得 React 开发更简单更有趣.

ES6+ 开发 React 组件

在这里简要的说一下这些语言新特性对 React 应用的开发有什么影响,这些 ES6+ 特性使得 React 开发更简单更有趣. 类 迄今为止,最能体现我们使用 ES6+ 来编写 React 组件的就是我们选择使用类定义语法.替代了使用 React.createClass 方法来定义一个组件,我们可以定义一个 bonafide ES6 类来扩展 React.Component: ? 1 2 3 4 5 class Photo extends React.Component {   render()

react组件化开发发布到npm

1.项目目录 build:webpack打包用(开发环境.发布环境) example:开发环境的模板页 lib:打包好的文件夹(用于发布到npm上) src:想要封装的公共组件 .babelrc:处理es6语法 package.json:打包的依赖文件,管理项目模块包 开发环境配置(webpack.dev.config.js) const path = require('path') const htmlWebpackPlugin = require('html-webpack-plugin')