React(5)语法学习{生命周期、网络请求、子元素绑定}

本文介绍了React组件的生命周期,包括组件挂载、更新和销毁阶段的重要方法,如componentDidMount和componentDidUpdate等,并详细解释了如何利用这些方法进行网络请求及数据处理。此外,还探讨了子组件绑定的方法。
摘要由CSDN通过智能技术生成

一、生命周期

组件生命周期 组件开发到结束的整个过程。react提供了组件在各个生命节点的操作方法,称为钩子函数

Vue的组件生命周期:created=>mounted=>updated=>destoryed

  • componentDidmount 组件挂载时触发 初始化操作和发送网络请求
  • shouldComponentUpdate 组件将要更新 可以用来控制重绘DOM的时机 这个方法 必须要有一个返回值 bool类型 true 渲染 fasle为不渲染
  • componentDidUpdate 组件状态更新时触发 监控到状态的变化 如果状态发生改变需要进行特定业务操作,可以写在这里
  • componentWillUnmount 组件将要销毁时触发 回收资源操作

二、网络请求

客户端请求服务端接口,需要通过JS代码发送请求。是浏览器XHR对象

不同的框架,对于XHR对象进行封装

JQuery .get() .post() $.ajax()

Vue axios

wx wx.request

uni-app uni.request

...............

// rcc 
// 网络请求
import React, { Component } from 'react'

export default class App extends Component {
  componentDidMount(){
    // 发送请求写在这里
    const url= "https://api.apiopen.top/getWangYiNews"
    // get请求
    // res.json() 处理数据为json对象格式
    fetch(url).then(res=>res.json()).then(res=>{
      console.log(res);
    })
  }
  render() {
    return (
      <div>
        
      </div>
    )
  }
}

请求示例

// rcc
import React, { Component } from 'react'

export default class App extends Component {
  state = {data:null}
  componentDidMount(){
    this.getData()
  }
  getData(){
    // const url = 'https://m.douyu.com/api/room/list?type=yz'
    // 配合代理 需要修改url地址 添加一个标识信息
    const url = '/douyu/api/room/list?type=yz'
    fetch(url).then(res=>res.json()).then(res=>{
      console.log(res);
      this.setState({data:res.data}) 
    })
  }
  showRooms = ()=>this.state.data.list.map((item,index)=>(
    <div key={index}>
      <img src={item.roomSrc} />
      <div>{item.roomName}</div>
    </div>
  ))
  render() {
    // 判断接口数据未返回时,不渲染  返回空标签
    if(this.state.data == null) return <div></div>;
    return (
      <div>
        {this.showRooms()}
      </div>
    )
  }
}

三、子元素绑定

// rcc
// ref绑定
/***
 *  子元素绑定: 通过绑定的变量 调用子元素的方法或者属性
 *  Vue中ref概念 通过变量可以获取到组件标签对象
 *  <uni-pop ref="popup"></uni-pop>
 *  调用uni-pop组件的open方法 实现弹出层效果
 *  this.$refs.popup 组件对象
 *  this.$refs.popup.open() 组件对象调用方法
 */
import React, { Component } from 'react'

export default class App extends Component {
  // 方法一:声明变量
  son1 = React.createRef();
  useSon(){
    // 调用子元素的方法
    // 方法一调用
    this.son1.current.show()
    this.son2.show()
  }
  render() {
    return (
      <div>
        {/* 方法一 绑定的变量提前声明*/}
        <Son ref={this.son1}/>
        {/* 方法二 直接绑定不需要提前声明 */}
        {/* JS中如果对象属性不存在会自动声明创建 */}
        {/* el当前组件标签 Son */}
        <Son ref={(el)=>(this.son2=el)}></Son>
        {/* 调用子元素的方法 */}
        <button onClick={this.useSon.bind(this)}>调用子元素</button>
      </div>
    )
  }
}
class Son extends Component{
  num = 5;
  show(){
    alert('我是子组件的show方法')
  }
  render(){
    return <div>我是子组件</div>
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值