react中定义组件的两种方法【函数方式、class方式】

本文探讨了在React中定义组件的两种方法,包括函数方式和类方式。函数方式定义组件需要注意组件名、根元素和props的使用。而在类方式中,通过this.props接收父组件传递的值,并在state中管理状态。文章还举例说明了如何实现点击按钮增加数字的功能,强调了bind在修改this指向的重要性。
摘要由CSDN通过智能技术生成

一、函数方式

函数方式定义组件时,需注意以下几点:

  1. 组件名开头大写
  2. 只能有一个根元素
  3. 标签要闭合
  4. 获取开始和闭合标签的内容要用 props.children(pops值不能修改)
const Welcome = (props)=>{
            return(
                <div>
                    <h1>欢迎{props.name}</h1>
                    <p>{props.content}</p>
                    {props.children}
                </div>
            )
        }

        ReactDOM.render(
            <Welcome name="你们" content="inspiring">欲穷千里目,更上一层楼</Welcome>,
            document.getElementById('root')
        )

父组件向子组件传值用props
在这里插入图片描述

二、class方式

class Welcome extends React.Component {
            render() {
                return (
                    <div>
                        <h1>欢迎{this.props.name}</h1>
                        <p>{this.props.content}</p>
                        {this.props.children}
                    </div>
                )
            }
        }
        ReactDOM.render(
            <Welcome name="你们" content="inspiring">欲穷千里目,更上一层楼</Welcome>,
            document.getElementById('root')
        )

与函数方式不同的是,父组件向子组件传值时,用this.props.接收

应用

实现:点击按钮,实现数字+1功能

在这里插入图片描述

class Count extends React.Component{
            constructor(){
                super();
                // state中存值,可变
                this.state = {
                    num:100
                }
                // 修改自定义方法中的this指向
                this.addHandle = this.addHandle.bind(this)
            }
            addHandle(){
                // 修改state
                this.setState({
                    num:this.state.num+1
                })

            }
            render(){
                return (
                    <div>
                        <h1>{this.state.num}</h1>
                        <button onClick={this.addHandle}>add</button>
                    </div>
                )
            }
        }

        ReactDOM.render(
            <Count></Count>,
            document.getElementById('root')
        )

初始值存在this.state={}中,修改时在this.setState({})中修改;特别要注意的是,需要通过bind修改自定义方法的this指向,如果不修改,this值为undefined;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值