在react中如何实现渲染控制?

没有进行渲染控制

import React, { Component } from "react";

export default class RenderControl extends Component {
  constructor(props) {
    super(props);

    this.state = {
      num: 0,
      count: 0,
    };
   
  }

  render() {
    const { num, count } = this.state;
    return (
      <div>
       
        <Child num={num} />
        <button onClick={() => this.setState({ num: num + 1 })}>+{num}</button>
        <button onClick={() => this.setState({ num: count + 1 })}>
          +{count}
        </button>
      </div>
    );
  }
}
const Child = ({ num }) => {
  console.log("子组件执行");
  return <div>this is the child--{num}</div>;
};

有进行渲染控制

import React, { Component } from "react";

export default class RenderControl extends Component {
  constructor(props) {
    super(props);

    this.state = {
      num: 0,
      count: 0,
    };
    this.component = <Child num={this.state.num} />;
  }
  controlRender() {
    const { props } = this.component;
    if (props.num !== this.state.num) {
      return (this.component = React.cloneElement(this.component, {
        num: this.state.num,
      }));
    }
    return this.component;
  }
  render() {
    const { num, count } = this.state;
    return (
      <div>
        {this.controlRender()}

        <button onClick={() => this.setState({ num: num + 1 })}>+{num}</button>
        <button onClick={() => this.setState({ num: count + 1 })}>
          +{count}
        </button>
      </div>
    );
  }
}
const Child = ({ num }) => {
  console.log("子组件执行");
  return <div>this is the child--{num}</div>;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值