React-组件

1、类组件

import React from 'react';
class ClassApp extends React.Component {
    constructor(props) {
        super(props);
        this.state={};
    }
    render() {
        return (
            <div>
                <h1>这是一个类组件</h1>
                <p>接收父组件传过来的值:{this.props.name}</p>
            </div>
        );
    }
}
export default ClassApp;

2、函数组件

import React from 'react';
function FuncApp(props) {
    return (
        <div>
            <h1>我是函数组件</h1>
            <h2>接收父组件传过来的值:{props.name}</h2>
        </div>
    );
}

3、Props

(1)定义和使用props

react中的每一个组件,都包含有一个属性(props),属性主要是从父组件传递给子组件的 

<!--父组件-->
<Child title={item.title} path={item.path} />
<!--子组件-->
<a className="mylink" href={this.props.path}>{this.props.title}</a>

(2)默认属性

在react中可以定义默认props,当我们没有给子组件传值时,将采用默认的props属性

class MyApp extends React.Component {
    render() {
        return (
            <div>{this.props.name}</div>
        )
    }	
}
MyApp.defaultProps = {
    name: '这是默认属性值'
};

(3)延展属性

在组件中使用{...this.props}的方式传递属性。“...”表示JSX的延展操作符,这种方式可以很方便的为组件指定多个属性,并且为属性的值指定数据类型

//父组件
<MyBox {...MyBox.props} />
//子组件
class MyApp extends React.Component {
    render() {
        return(
            <h1>{this.props.name} : {this.props.age} : {this.props.sex}</h1>
        );
    }
}
MyApp.props = {
    name: '张三', 
    age: 18,
    sex: '男'
};

(4)Props验证

// 添加属性类型验证,当传递的数据类型不正确时,会报错提示
MyApp.propTypes = {
    age: PropTypes.number,
    name: PropTypes.string
}

4、生命周期函数

constructor会在生命周期之前执行,执行了再去执行生命周期钩子

  • 组件将要挂载时触发的函数:componentWillMount
  • 组件挂载完成时触发的函数:componentDidMount
  • 组件接收到一个新的 props时触发的函数:componentWillReceiveProps(这个方法在初始化render时不会被调用)
  • 是否要更新数据时触发的函数:shouldComponentUpdate(组件挂载之后,每次调用setState后都会调用shouldComponentUpdate判断是否需要重新渲染组件。默认返回true,需要重新render。在比较复杂的应用里,有一些数据的改变并不影响界面展示,可以在这里做判断,优化渲染效率)
  • 将要更新数据时触发的函数:componentWillUpdate(shouldComponentUpdate返回true或者调用forceUpdate之后,componentWillUpdate会被调用,调用后执行render)
  • 组件完成更新后触发的函数:componentDidUpdate
  • 组件将要销毁时触发的函数:componentWillUnmount
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值