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()

原文地址:https://www.cnblogs.com/lishixiang-007/p/11337451.html

时间: 2024-10-08 01:23:13

React组件安装使用和生命周期函数的相关文章

React 学习(四) ---- 生命周期函数

现在我们能修改状态,页面可以进行交互了,但是还有一种状态改变没有解决,那就是倒计时效果,时间一直在变化,组件状态也一直在改变,但我们什么都没有做,如果要实现这样的效果,需要怎么处理? 我们都知道,改变状态用的是setState,  上次讲的加减操作是在把它写到事件处理函数中来改变状态的,但现在没有什么事件供我们调用,因为我们没有做任何操作,它却一直在变化,现在要做的就是找一个机会或入口,来写setState 函数, 这个机会就是组件的生命周期函数. 生命周期也是来源于对我们对现实生活的思考, 对

React之生命周期函数

1.新增知识点 /* https://reactjs.org/docs/react-component.html React生命周期函数: 组件加载之前,组件加载完成,以及组件更新数据,组件销毁. 触发的一系列的方法 ,这就是组件的生命周期函数 组件加载的时候触发的函数: 顺序:constructor -> componentWillMount -> render -> componentDidMount 组件数据更新的时候触发的生命周期函数: shouldComponentUpdate

React生命周期函数的使用场景

使用shouldComponentUpdate( ) 生命周期函数,减少render函数的执行,减少对未发生改变的DOM结点的重复渲染. shouldComponentUpdate(nextProps, nextState) { if(nextProps.content !== this.props.content) { return true }else { return false } } render() { console.log('child render') const { cont

React组件生命周期过程说明【转】

实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getInitialState componentWillMount render componentDidMount 存在期 组件已存在时的状态改变 componentWillReceiveProps shouldComponentUpdate componentWillUpdate render com

React组件生命周期小结

转载自:http://www.jianshu.com/p/4784216b8194 下面所写的,只适合前端的React.(React也支持后端渲染,而且和前端有点小区别,不过我没用过.) 相关函数 简单地说,React Component通过其定义的几个函数来控制组件在生命周期的各个阶段的动作. 在ES6中,一个React组件是用一个class来表示的(具体可以参考官方文档),如下: // 定义一个TodoList的React组件,通过继承React.Component来实现 class Tod

React 组件的生命周期API和事件处理

一.简单记录React的组件的简洁的生命周期API: A:实例化期: 一个实例第一次被创建时所调用的API与其它后续实例被创建时所调用的API略有不同. 实例第一次被创建时会调用getDefaultProps,而后续实例创建时不会调用这个方法. 实例被创建时,依次被调用的API有: getDefaultProps: 实例第一次被创建时才调用,对于组件类来说,它只调用一次. 这个方法返回的对象可为实例设置默认的props值. getInitialState: 对于每个实例来说,这个方法只调用一次.

React—组件生命周期详解

React-组件生命周期详解 转自 明明的博客  http://blog.csdn.net/slandove/article/details/50748473 (非原创) 版权声明:转载请注明出处,欢迎加入QQ群(115402375)讨论!博客编写已经转移到http://blog.csdn.net/limm33 在组件的整个生命周期中,随着该组件的props或者state发生改变,它的DOM表现也将有相应的改变,一个组件就是一个状态机,对于特定的输入,它总会返回一致的输出. React为每个组件

React组件生命周期过程说明

实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getInitialState componentWillMount render componentDidMount 存在期 组件已存在时的状态改变 componentWillReceiveProps shouldComponentUpdate componentWillUpdate render com

React Native组件的结构和生命周期

React Native组件的结构和生命周期 一.组件的结构 1.导入引用 可以理解为C++编程中的头文件. 导入引用包括导入react native定义的组件.API,以及自定义的组件. 1.1 导入组件 1.2 导入API 1.3 导入自定义组件 2.组件的声明 组件的生命分为组件的定义和样式.组件的定义有各种组件的组成结构.方法的定义. 2.1 组件的定义 2.2 组件样式 组件样式的定义可以直接在组件的定义中的style中定义.但是对于样式复杂的组件需要组件样式. 3.组件的注册或导出