0

0

React简单实用的小知识点整理集锦(附实例代码)

寻∝梦

寻∝梦

发布时间:2018-09-11 15:22:04

|

1530人浏览过

|

来源于php中文网

原创

本篇文章主要的讲述了关于react的一些简单实用的小知识整理集锦。现在我们来看看这篇文章的具体内容

一:React的生命周期

1.1 组件生命周期的三种状态展示:
- Mounting: 已插入了真是dom结构
- Updating:  正在被重新渲染
- Unmounting:  已移出了真实dom结构

1.2 关于 生命周期的处理函数(will表示进入状态之前调用,did表示进入状态之后调用)

componentWillMount()//组件将要渲染到真实dom节点;

componentDidMount()//组件已经渲染到真实dom节点;

componentWillUpdate()//state值发生变化,组件将要被重新渲染;

componentDidUpdate()//组件已经完成重新渲染;

componentWillUnmout()//卸载组件,比如跳转路由的时候

componentWillReceiveProps() //已经加载组件props发生改变的时候调用;

shouldComponentUpdate()//组件判断是否要重新渲染的时候调用;

1.3 关于组件生命周期的执行顺序 如下图所示:
3.png

二:查找dom节点操作(ref)

1 react中通过ref给dom节点加上一个名字,然后我们通过this.refs.ref名 来获取

eg:

render(){    return (
        

this is a test

) }

如上面代码所示我们在需要的获取这个p标签的时候就可以通过this.refs.demo来进行一系列的操作了,就和原生javascript中通过document.getElementById获取到的是一样的道理;

三: 受控表单组件

1.在受控表单组件中的value值都要与state属性进行绑定,并且需要通过onChange方法去改变值;
eg:

export default class Demo extends React.Component{
            constructor(props){                super(props)                this.state = {
                    testInput: ''
                }
            }
            handleInput = (e) => {
                let str = ''
                if(e.target.value.length >= 8){                    str = e.target.value.splice(0,5) + '...'
                }                this.setState({
                    testInput: str
                })
            }
            render(){                return (
                    

) } }

四: 关于属性校验

static: propTypes = {
     userName: React.PropTypes.bool.isRequired, //表示是必填项且是布尔类型
     passWord: React.PropTypes.number //表示必须是数值类型
}

更多关于属性校验的方法…

五: 关于props

组件中的props主要实现的是父组件向子组件传递数据

如下demo所示

DemoTest.js

import React,{Component} from 'react'import Test from './Test.js'export default class Demo extends Component{
    constructor(props){        super(props)        this.state={
        }
    }
    render(){        return(
            

内容

) } }

Test.js

import React,{Component} from 'react'export default class Demo extends Component{
    constructor(props){        super(props)        this.state={
        }
    }
    render(){        return(
            
        )
    }
}

Test组件就能够接收到DemoTest组件中传进去的wenzi值了(想看更多就到PHP中文网React参考手册栏目中学习)

2.png

六: 子孙级别数据属性传递(context)

说明: 如果我们利用props也是可以实现这个效果的,但是那样的话,无疑比较麻烦,下方代码是通过context实现的

import React,{Component} from 'react'class Child extends Component{
    constructor(props){        super(props)        this.state={
        }
    }    static contextTypes = {
        wenzi: React.PropTypes.string
    }
    render(){        return(
            

) } }class Son extends Component{ constructor(props){ super(props) this.state={ } } render(){ return(

) } } export default class Parent extends Component{ constructor(props){ super(props) this.state={ } } getChildContext = () => { return{ wenzi: '测试按钮' } } static childContextTypes = { wenzi: React.PropTypes.string } render(){ return(

) } }

效果:1.png

Whimsical
Whimsical

Whimsical推出的AI思维导图工具

下载

七: react中添加动画(react-addons-css-transition-group)

react-addons-css-transition-group这个组件只是提供了内容显示隐藏的动画功能;

基本使用:
1.安装->import入
2.想让哪一部分有显示隐藏动画,就用该组件包裹起来

{ items }

根据指定的transitionName值从而去设置一些显示隐藏的css样式

.example-enter{ 
//此处填写的是进入的样式 eg: opacity: 0;
}.example-enter.example-enter-active{ 
//此处填写的是进入结束的样式 eg: opacity: 1;
    transition: opacity 500ms ease-in;
}.example-leave{ 
//此处填写的是离开的样式 eg: opacity: 1;
}.example-leave.example-leave-active{ 
//此处填写的是离开结束的样式 eg: opacity: 0;
    transition: opacity 500ms ease-in;
}//注意: 下方初始化的状态还要结合transitionAppear={true}为true才可以.example-appear{    //初始化时候的状态
    opacity: 0;
} 
.example-appear.example-appear-active{ 
//初始化结束时候的状态eg: opacity: 1;
    transition: opacity 500ms ease-in;
}

点击查看更多信息…

八: react中的路由(react-router)

基本使用代码记录:

//首先是引入
import { Route,Router,browserHistory } from 'react-router'
render(){
    return(
        //这里使用了browserHistory优化了路径,路径上就不会有#了        
            
                //指定默认情况下加载的子组件                
                
                
                
                    
                
            
        
    )
}

注: 关于browserHistory与hashHistory的区别

1.browserHistory在低版本浏览器不支持,但是hashHistory支持
2.使用browserHistory,直接复制链接在一个新的页面粘贴访问时无法访问的,但是hashHistory可以
3.使用browserHistory那么在地址栏上不会出现#,而使用hashHistory会出现#号
4.使用browserHistory组件在执行的时候只执行一次,而使用hashHistory会执行两次,这样的话,对于一些生命周期函数的操作可能会出现问题

前提: 配合webpack一起
实现按需加载:即实现除了首页需要的组件以外,其他的组件都是访问了才加载。。。

代码实现就是将之前写好的路由里的component改写下:下面就列举about这一个

import { Route,Router,browserHistory } from 'react-router'render(){    return(        //这里使用了browserHistory优化了路径,路径上就不会有#了
        
                            //指定默认情况下加载的子组件
                
                 {                        require.ensure([],(require) => {
                            callback(null,require('组件路径地址').default)
                        },"自定义一个名字")
                    }
                }
                 />
                
                    
                
            
        
    )
}

了解更多关于按需加载~

九: fetch请求服务

关于fetch

如果要用到jsonp的话,安装fetch-jsonp

十: 获取路径参数和查询字符串

路径参数:

this.props.params.参数名

查询字符串:

this.props.location.query.参数名

本篇文章到这就结束了(想看更多就到PHP中文网React使用手册栏目中学习),有问题的可以在下方留言提问。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2525

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1603

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1496

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1416

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1445

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.6万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

React核心原理新老生命周期精讲
React核心原理新老生命周期精讲

共12课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号