React组件安装使用和生命周期函数
React安装
在使用react时 需要安装 两个模块
react react-dom
初始化时 需要用到react-dom中的render方法
具体如下:
import ReactDOM from "react-dom"
ReactDOM.render(<div>test</div>,document.getElementById("app"),()=>{
console.log("应用初始化完毕")
})
或者
import {render} from "react-dom"
render(<div>test</div>,document.getElementById("app"),()=>{
console.log("应用初始化完毕")
})
定义组件(在react中 组件首字母必须大写)
简单组件:
let Box = function(props){
return <div>xxxx{props.xxx}</div>
}
或者采用箭头函数
let Box = props => <div>xxxx{props.xxx}</div>
完整组件
import React from "react"
class Box extends React.Component{
render(){
return <div></div>
}
}
值得注意的是 在定义组件时,组件的结构只能有一个顶层元素
如果dom结构比较复杂 需要多行时 最好用()将html结构括起来 例如:
return (<div>
<button>按钮</button>
</div>)
组件的状态: state
组件的数据模型均挂载在state上 可在构造函数内进行初始化
class Box extends React.Component{
constructor(){
this.state = {
username : "",
goodsList : []
}
}
render(){
return ....
}
}
在渲染函数中 获取组件状态: this.state.username
修改组件状态:
this.setState({
username : "new value"
})
绑定事件:
通过在事件名前面加on并且采用驼峰命名法例如:
<a href="javascript:;" onClick={this.sayHello}>btn</a>
正常情况 无需也不能加() 否则 该函数在加载阶段就立即运行了 此时绑定到事件上的只是函数的返回值
还有一点需要注意: 将函数丢给click事件后 它的this不再指向当前组件
如果在函数体内涉及到this调用 记得赋值前绑好this指向 例如:
class Box extends React.Component{
constructor(){
this.sayHello = this.sayHello.bind(this)
this.state = {
name : "zhuiszhu"
}
}
sayHello(){
console.log(`hello ${this.state.name}`)
}
render(){
return <a onClick={this.sayHello}></a>
}
}
如果绑定函数时需要传参 则让函数的返回值为点击时需要执行的函数即可
例如:
{
constructor(){
this.state = {
name : "zhuiszhu"
}
}
sayHello(name){
return () => {
console.log(`hello ${name}`)
console.log(this.state.name)
}
}
render(){
return <a onClick={this.sayHello('zhuiszhu')} >打招呼</a>
}
}
数据双向绑定
{
constructor(){
this.state = {
name :"zhuiszhu"
}
this.changename = this.changename.bind(this)
}
changename(e){
let value = e.target.value
this.setState({
name : value
})
}
render(){
return <input value={this.state.name} onChange={this.changename} />
}
}
如果无需用到数据双向绑定 可仅在提交时获取最新数据即可
例如:
{
sub(){
let data = {
username : this.refs.username.value,
password : this.refs.password.value,
password2 : this.refs.password2.value
}
//提交
}
render(){
return (<form onSubmit="this.sub.bind(this)">
<div>用户名: <input type="text" placeholder="请输入用户名" ref="username" /></div>
<div>密码: <input type="text" placeholder="请输入密码" ref="password" /></div>
<div>重复密码: <input type="text" placeholder="请重新输入密码" ref="password2" /></div>
<input type="submit" value="注册" />
</form>)
}
}
组件的props: 用于接收由父级传递的数据
{this.props.xxx}
父级调用子组件传递props时
<Child xxx="123" />
注意,如果你要传动态数据或者数字类型或者boolean类型 则需要采用如下写法
let yyy = "zhuiszhu"
<Child xxx={ yyy | 123 | false} />
props类型验证:
需要给当前组件(类)上添加上静态属性 propTypes
例如:
es5写法:
import PropType form "prop-types"
class Box extends React.Componnet{
....
}
Box.propTypes = {
propname : PropType.string,
propname1 : PropType.func.isRequired, //必填
...
}
es6写法
import PropType form "prop-types"
class Box extends React.Componnet{
....
static propTypes = {
propname : PropType.string,
propname1 : PropType.func.isRequired, //必填
...
}
}
组件的生命周期函数:
三大时期:
加载期 更新期 卸载期
默认 每个时期都有之前和之后 卸载期除外
更新期之前额外多出两个生命周期函数
之前都是will
之后都是did
加载是mount
更新时update
卸载unmount
其中允许更新是所有生命收起函数中唯一不以component为开头的生命周期函数
接收父级props之前的生命周期函数是唯一以四个单词组成的生命周期函数
加载前
componentWillMount()
加载后
componentDidMount()
组件之前接收props
componentWillReceiveProps(newProps)
允许组件更新
shouldComponentUpdate(newProps,newState)
更新前
componentWillUpdate(newProps,newState)
更新后
componentDidUpdate(oldProps,oldState)
卸载前
componentWillUnmount()
React组件安装使用和生命周期函数的更多相关文章
- React组件详细介绍及其生命周期函数
组件的详细说明 通过Reac.createClass({...})创建组件的时候,应该有一个render()方法,也可以在其中添加生命周期函数. render方法 当调用该方法的时候,会检测this. ...
- React——组件的生命周期函数
每一个组件都有一些生命周期函数. 当组件实例被创建并且会插入到DOM中,下面这些函数会被调用 constructor componentWillMount render componentDidMou ...
- React生命周期函数详解
React生命周期函数 生命周期函数是指在某一个周期自动执行的函数. React中的生命周期执行过程 以下是React中的常用的生命周期函数,按个部分中按照自动执行顺序列出,这几个过程可能存在同时进行 ...
- 2.React 生命周期函数
什么是生命周期函数:在某一时刻组件会自动调用执行的函数. import React,{ Component,Fragment } from 'react' class Note extends Com ...
- 【React自制全家桶】五、React组件的生命周期函数详解
一.总览React组件的生命周期函数 什么是生命周期函数:简单的来说就是 在某个时刻会自动执行的函数 二.React的生命周期函数主要由四块组成 分别是:组件初始化.组件挂载.组件更新.组件卸载 三. ...
- 10. react 基础 ref 的使用 及 React 16 的生命周期函数 及 生命周期函数使用场景
一. ref 的使用 ( 直接获取 DOM 元素 ) 在 input 标签上 可以使用 ref 属性 获取当前DOM节点 eg: import React , { Component, Fragmen ...
- React 学习(四) ---- 生命周期函数
现在我们能修改状态,页面可以进行交互了,但是还有一种状态改变没有解决,那就是倒计时效果,时间一直在变化,组件状态也一直在改变,但我们什么都没有做,如果要实现这样的效果,需要怎么处理? 我们都知道,改变 ...
- react生命周期函数使用箭头函数,导致mobx-react问题
最近新人加入了项目,遇到了一个很奇怪的问题.mobx observable 属性,onChange的时候就是页面不会刷新. 试来试去,就是不知道什么原因,后来其他同事查到是因为componentWil ...
- React 组件的生命周期方法
React 组件的生命周期方法 按渲染顺序: 1: componentWillMount() – 在渲染之前执行,在客户端和服务器端都会执行. 2: componentDidMount() – 仅在第 ...
随机推荐
- 配置VS Code+React开发环境
1.安装node+npm 2.安装VS Code 3.选择工作区文件夹——右键点击在终端中打开 4.按照Using React in Visual Studio Code的文档进行操作 npm ins ...
- C语言、指针(一)
指针(一) “带*类型” 的特征探测:宽度 “带*类型” 的特征探测:声明 “带*类型” 的特征探测:赋值 “带*类型” 的特征探测:++ -- “带*类型” 的特征探测:加上/减去 一个整数 “带* ...
- weblogic新增域并进行Jconsole监听
一.创建域: 第一步,打开域配置界面: [bofm@UAT02-BIZ-ZJCG-AP-002 bin]$ cd /home/software/weblogic/Oracle/Middleware/w ...
- Linux系统配置永久明细路由
版权声明:本文为博主原创文章,支持原创,转载请附上原文出处链接和本声明. 本文链接地址:https://www.cnblogs.com/wannengachao/p/11947400.html 1.创 ...
- 使用Azure进行自动化机器学习
什么是自动化机器学习? 自动化的机器学习,也称为 AutoML,让数据科研人员. 分析人员和开发人员,同时维护模型质量构建具有高缩放性. 效率和工作效率的机器学习模型. 自动化机器学习生成的机器学习模 ...
- 8. 多态——编译时类型&运行时类型
一.引用变量的两种类型 1. 编译时类型:由声明该变量时使用的类型决定 2. 运行时类型:由实际赋给该变量的对象决定 如果编译时类型和运行时类型不一致,就可能出现多态. class BaseClass ...
- 【bzoj4006】[JLOI2015]管道连接(斯坦纳树+dp)
题目链接 题意: 给出\(n\)个点,\(m\)条边,同时给出\(p\)个重要的点以及对应特征. 现在要选出一些边,问使得这\(p\)个所有特征相同的点相连,问最小代价. 思路: 斯坦纳树的应用场景一 ...
- 理解docker镜像
镜像是用来启动容器的只读模板,是容器启动所需要的rootfs,类似于虚拟机所使用的镜像. 列出本机镜像 [root@localhost ~]# docker imagesREPOSITORY TAG ...
- Codeforces Round #604 (Div. 2) 练习A,B题解
A题 链接 思路分析: 因为只需要做到相邻的不相同,利用三个不同的字母是肯定可以实现的, 所以直接先将所有的问号进行替换,比如比前一个大1,如果与后面的冲突,则再加一 代码(写的很烂): #inclu ...
- 【Ribbon篇四】Ribbon初步配置(2)
一. 微服务消费者改造 注:修改microservicecloud-consumer-dept-80工程 1. pom.xml添加依赖 <!-- eureka client --> < ...