react输入 撤销

  1. 销毁阶段可以使用的函数:
    componentWillUnmount:在删除组件之前进行清理操作,比如计时器和事件监听器。因为这些函数都是开发者手动加上去的,react不知道,必须进行手动清理。
  2. 实例
    第一种方式:在render中,把之前已有的页面去掉,反映到页面中,就是把它删掉。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试触发顺序,不输入不会触发五个函数,只会触发render</title>
    </head>
    <body>
        <script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/react.min.js"></script>
        <script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/JSXTransformer.js"></script>
        <script type="text/jsx">
            var style={
               color:"red",
               border:"1px solid #f99",
               width:"200px",
               height:"50px"
            };
            var HelloWorld= React.createClass({
                render:function(){
                    console.log("render,4");
                    return <p>Hello,{this.props.name ? this.props.name : "World"}</p>;
                },
                componentWillUnmount:function(){
                    console.log("BOOM");
                },
            });
            var HelloUniverse=React.createClass({
                getInitialState:function(){
                    return {name:""};
                },
                handleChange:function(event){
                    //用来响应input的输入事件
                    this.setState({name:event.target.value});
                },
                render:function(){
                    if(this.state.name == "123"){
                       return <div>123</div>
                    }
                    return <div>
                    <HelloWorld name={this.state.name
                        //这里引用了HelloWorld的组件,所以HelloUniverse是他的子组件
                    }></HelloWorld>
                    <br />
                    <input type="text" onChange={this.handleChange} />
                    </div>
                },
            });
            React.render(<div style={style}><HelloUniverse></HelloUniverse></div>,document.body)
            // 写为React.render(<div style={style}><HelloWord></HelloWorld></div>,document.body)看看效果
        </script>
    </body>
    </html>

    输入别的不会触发

    当输入123的时候

    第二种:就是使用react提供的一个函数unmountComponentAtNode

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/react.min.js"></script>
        <script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/JSXTransformer.js"></script>
        <script type="text/jsx">
            var style={
               color:"red",
               border:"1px solid #f99",
               width:"200px",
               height:"50px"
            };
            var HelloWorld= React.createClass({
                render:function(){
                    console.log("render,4");
                    return <p>Hello,{this.props.name ? this.props.name : "World"}</p>;
                },
                componentWillUnmount:function(){
                    console.log("BOOM");
                },
            });
            var HelloUniverse=React.createClass({
                getInitialState:function(){
                    return {name:""};
                },
                handleChange:function(event){
                    //判断的是input里面的值,如果是123,我们就使用unmountComponentAtNode来删除
                    //使用unmountComponentAtNode时,传入的必须是装载时候的节点。
    
    if(event.target.value == "123"){
                      React.unmountComponentAtNode(document.getElementsByTagName("body")[0]);
                      return;
                    }
                    this.setState({name:event.target.value});
                },
                render:function(){
                    return <div>
                    <HelloWorld name={this.state.name
                        //这里引用了HelloWorld的组件,所以HelloUniverse是他的子组件
                    }></HelloWorld>
                    <br />
                    <input type="text" onChange={this.handleChange} />
                    </div>
                },
            });
            React.render(<div style={style}><HelloUniverse></HelloUniverse></div>,document.body)
            // 写为React.render(<div style={style}><HelloWord></HelloWorld></div>,document.body)看看效果
        </script>
    </body>
    </html>

时间: 2024-08-10 15:07:39

react输入 撤销的相关文章

Emacs-keys

title: Emacs keys categories: - Technology - Emacs date: 2014-10-30 14:32:15 tags: - emacs Emacs 经常用到的快捷键, 很全. C = Control M = Meta = Alt | Esc Del = Backspace 基本快捷键(Basic) C-x C-f "find"文件, 即在缓冲区打开/新建一个文件 C-x C-s 保存文件 C-x C-w 使用其他文件名另存为文件 C-x C

分布式管理控制系统Git与项目托管平台Github相关概念、操作方法与常用命令

简介 GitHub 是一个面向开源及私有软件项目的托管平台 因为它只支持 Git 作为唯一版本库格式进行托管,所以命名GitHub Git是一个开源的分布式版本控制系统 可以有效.高速的处理从很小到非常大的项目版本管理 它也是目前世界上最先进的分布式版本控制系统 什么是版本控制系统呢? 简单地说,它有以下功能 备份(记录多个版本文件的功能) 记录操作时间线(查看历史操作,进行版本回滚.前进的功能) 多端共享代码(代替各种云盘的功能) '自动'合并(解决多人开发冲突问题) 这样的一个系统的优点是不

c++的自学笔记

好久好久没有写代码,写博客了,今天把学习笔记直接粘贴在上面 #include<stdio.h> #include<string.h> #include<stdlib.h> #define MAXVEX 40 #define INFINITY  20000 typedef struct { int No;//序号 char name[20];//名字 int X;//显示图地点的横坐标 int Y;//显示图地点的纵坐标 char introduce[100];//介绍

EMACS快捷键

C = Control M = Meta = Alt | Esc Del = Backspace 基本快捷键(Basic) C-x C-f "find"文件, 即在缓冲区打开/新建一个文件 C-x C-s 保存文件 C-x C-w 使用其他文件名另存为文件 C-x C-v 关闭当前缓冲区文件并打开新文件 C-x i 在当前光标处插入文件 C-x b 新建/切换缓冲区 C-x C-b 显示缓冲区列表 C-x k 关闭当前缓冲区 C-z 挂起emacs C-x C-c 关闭emacs 光标

VIM基本用法

vim基本用法 模式化编辑器 模式: 编辑模式: 命令模式 键盘操作常被理解为编辑命令 输入模式 末行模式: vim内置的命令接口,执行vim命令 打开文件 vim [option]... [file]... 模式转换: 编辑模式 --> 输入模式 i: 在光标所在处的前方转换为输入模式 a: 在光标所在处的后方转换为输入模式 o: 在光标所在行的下方新建一个空行并转换为输入模式 I: 行首 A: 行首 O: 光标所在行的上方新建一个空白行 输入模式 --> 编辑模式 Esc 编辑模式 --&

React Native 文本输入

TextInput是一个允许用户输入文本的基础组件.它有一个名为onChangeText的属性,此属性接受一个函数,而此函数会在文本变化时被调用.另外还有一个名为onSubmitEditing的属性,会在文本被提交后(用户按下软键盘上的提交键)调用. import React, { Component } from 'react'; import { AppRegistry, Text, TextInput, View } from 'react-native'; class PizzaTran

混合开发的大趋势之一React Native TextInput (文本输入)

转载请注明出处:王亟亟的大牛之路 昨天发了个力发了3篇RN的,今天继续学习,终于有新的组件进入我们的视野,这一篇是"输入框"TextInput 继续安利,每天都在更新:https://github.com/ddwhan0123/Useful-Open-Source-Android TextInput TextInput是允许用户输入文本的基础组件. 他有一些属性可以来帮助我们处理业务逻辑诸如onChangeText onSubmitEditing 等等 类似于Android 的Edit

Android仿iPhone晃动撤销输入功能(微信摇一摇功能)

重力传感器微信摇一摇SensorMannager自定义alertdialogSensorEventListener 很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内容,很多手机需要一直按住退格键逐字逐句的删除,稍稍麻烦,不过 在iPhone上,有个人性化的功能,当我们想要去撤销刚刚输入的所有内容的时候,可以轻轻晃动手机,会弹出提示框,点击确定就可以清空内容,如下图: 在 android中,一般手机貌似没有定制这个功能,不过我们可以自己去实现这样的功能,放置在我

react文档demo实现输入展示搜索结果列表

文档页面地址:https://doc.react-china.org/docs/thinking-in-react.html 该文档只给了具体实现思路,下面是我实现的代码. 初学react,如果有写的不规范的地方,望大家多多指正! FilterableProductTable (橙色): 包含了整个例子 SearchBar (蓝色): 接受所有的用户输入 ProductTable (绿色): 根据用户输入过滤并展示数据集合 ProductCategoryRow (绿松石色): 展示每个分类的标题