React入门第三弹——有状态组件以及事件处理的相关(案例说明,一看就会)

本文深入探讨React中的有状态组件和事件处理,包括无状态组件与有状态组件的区别、使用规则和传值方法。讲解了有状态组件的props传值和state管理,强调了尽量使用无状态组件以优化性能。此外,还详细阐述了事件处理函数的语法、this的绑定以及如何处理条件渲染。文章以实例解析了React中setState的必要性和受限组件的响应式问题,提供了双向数据绑定的实现方案。
摘要由CSDN通过智能技术生成

前言

上篇文章主要讲了JSX语法入门和无状态组件的传值,内容还是比较简单的,今天给大家带来React入门第三弹——有状态组件和事件处理。

组件的分类

在React中,组件分为函数组件和class组件,也就是无状态组件和有状态组件。

  • 函数式组件(无状态组件)
    直接定义函数的形式,不存在state,只会有props,它没有生命周期函数。
    // 函数式组件(无状态组件)
    function Hello() {
         
      return <h1>Hello,jianan</h1>
    }
    
  • class组件(有状态组件)
    使用class定义、extends继承React.Component。有state进行数据的存储和管理,同时还可以拥有props,有生命周期函数。
    // class组件(有状态组件)
    class Hello extends React.Component {
         
      render() {
         
        return <h1>Hello jianan</h1>
      }
    }
    

无状态组件和有状态组件的使用规则

  1. 因为数据的更改都是根据状态进行更改的,如果只是单纯的处理一些逻辑,而不需要改变数据的值就使用无状态组件。我们可以使用props进行组件间的通信和传值。
  2. 如果需要改变某些数据的话,或是想要存储一些数据并且想要对这些数据进行一些增删改查的话,那么就应该使用有状态组件。我们使用的是state,数据会发生变化就会触发生命周期这些函数。

无状态组件和有状态组件传值的取用

  • 无状态组件
    使用props传值时,使用props.属性名进行取用。
  • 有状态组件
    使用props传值时,使用this.props.属性名进行取用。使用state定义状态时,使用this.state.属性名进行取用。

一般数据会通过父组件进行传递,这样就可以进行统一的数据管理,在父级进行一个集中的数据管理。以上是在没有使用redux的情况下,如果使用了redux的话,就会在redux中进行状态管理。

有状态组件

本篇文章我们先来学习有状态组件:
有状态的组件需要使用render方法进行渲染,是生命周期里面非常基础和底层的方法,一定要用它来进行渲染

<script type="text/babel">
    class Hello extends React.Component {
   // 有状态的组件需要使用render方法进行渲染,是生命周期里面非常基础和底层的方法,一定要用它来进行渲染
        render() {
   
            return <h1>hello weiyu</h1>
        }
    }
    ReactDOM.render(
        <Hello/>,
        document.getElementById("root")
    )
</script>

有状态组件props传值

需要传什么值直接写在组件的上面,渲染的时候直接使用单花括号 { this.props.name }

<div id="root"></div>
<script type="text/babel">
    class Hello extends React.Component {
   
        render() {
   
            return <div>
                <h1>这是一个有状态组件</h1>
                <h1>姓名:{
   this.props.name}</h1>
                <h1>年龄:{
   this.props.age}</h1>
                <h1>性别:{
   this.props.sex}</h1>
            </div>
        }
    }
    ReactDOM.render(
        <Hello name="weiwei" age="18" sex="男"/>,
        document.getElementById("root")
    )
</script>

有状态组件state

有状态组件中state在实际开发中通常采用以下写法:

<div id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beiyux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值