[React] 10.React - Props, State与render函数

news/2024/7/15 17:59:02 标签: react.js, javascript, 前端

要做的功能,点击增加按钮,数字加1
在这里插入图片描述

  1. 新建一个counter.js的文件,代码如下:
import React, {Component, Fragment} from "react";

class Counter extends Component {
    render() {
        return (
            <Fragment>
                <button>增加</button>
                <div>1</div>
            </Fragment>
        )
    }
}

export default Counter
  1. index.js中的代码做如下改动:
import React from 'react';
import ReactDom from 'react-dom';
import Counter from './counter'

// 将内容挂在到页面上
ReactDom.render(<Counter />, document.getElementById('root'))
  1. 在counter.js中定义一个数据,代码如下:
import React, {Component, Fragment} from "react";

class Counter extends Component {

    constructor(props) {
        super(props);
        this.handleBtnClick = this.handleBtnClick.bind(this)
        this.state = {
            counter: 1
        }
    }

    handleBtnClick() {
        const newCounter = this.state.counter + 1
        this.setState({
            counter: newCounter
        });
    }

    render() {
        console.log('render')
        // 当组件初次创建的时候,rendere函数会被执行一次
        // 当state数据发生变更的时候,render函数会被重新执行
        return (
            <Fragment>
                <button onClick={this.handleBtnClick}>增加</button>
                <div>{this.state.counter}</div>
            </Fragment>
        )
    }
}

export default Counter
  1. 创建一个子组件:child.js,将数字放在子组件里显示
import React, {Component} from "react";

class Child extends Component{
    render() {
        return (
            <div>{this.props.number}</div>
        );
    }
}

export default Child;
  1. 更改父组件 counter.js,使其调用子组件中的数字
render() {
        console.log('render')
        // 当组件初次创建的时候,rendere函数会被执行一次
        // 当state数据发生变更的时候,render函数会被重新执行
        return (
            <Fragment>
                <button onClick={this.handleBtnClick}>增加</button>
                <Child number={this.state.counter}/>
            </Fragment>
        )
    }
  1. counter.js完整代码:
import React, {Component, Fragment} from "react";
import Child from "./child";

class Counter extends Component {

    constructor(props) {
        super(props);
        this.handleBtnClick = this.handleBtnClick.bind(this)
        this.state = {
            counter: 1
        }
    }

    handleBtnClick() {
        const newCounter = this.state.counter + 1
        this.setState({
            counter: newCounter
        });
    }

    render() {
        console.log('render')
        // 当组件初次创建的时候,rendere函数会被执行一次
        // 当state数据发生变更的时候,render函数会被重新执行
        // 当props数据发生变更的时候,render函数会被重新执行
        return (
            <Fragment>
                <button onClick={this.handleBtnClick}>增加</button>
                <Child number={this.state.counter}/>
            </Fragment>
        )
    }
}

export default Counter
  1. child.js中的代码:
import React, {Component} from "react";

class Child extends Component{
    render() {
        return (
            <div>{this.props.number}</div>
        );
    }
}

export default Child;

http://www.niftyadmin.cn/n/1440553.html

相关文章

在VS2005中设置WPF中自定义按钮的事件

原文:在VS2005中设置WPF中自定义按钮的事件上篇讲了如何在Blend中绘制圆角矩形&#xff08;http://blog.csdn.net/johnsuna/archive/2007/08/13/1740781.aspx&#xff09;&#xff0c;本篇继续下一步骤&#xff0c;如何自定义按钮的事件。 &#xff08;1&#xff09;首先&#…

Symbian系统(转)

Symbian是一个操作系统&#xff0c;是以Nokai为首的各手机厂商合伙攒的一个操作系统&#xff0c;主要用于高端的智能手机。其开发语言为C&#xff0c;可以使用Microsoft Visual C 6.0作为集成化的开发环境&#xff0c;看来虽然Symbian的目标是跟微软的SmartPhone较劲&#xff0…

[Mongodb] 5.nodejs连接Mongodb(1)

新建一个文件夹&#xff0c;生成npm环境&#xff0c;安装nodemon 新建一个index.js文件安装mongodb的npm插件: npm官网&#xff1a;npm官网搜索mongodb控制台中执行&#xff1a;npm i mongodb --savepackage.json中多了mongodb的依赖 4 定义mongodb客户端&#xff1a; co…

基础4

基础知识4 1.补充 margin的margin&#xff1a;0 auto&#xff1b;可以解决元素的居中&#xff0c;前提是给这个元素设置width。 2.css层叠的问题 css的两个性质 1.继承性&#xff1a;就是给父级设置的属性&#xff0c;同样也发生在了他的子代身上 2.层叠性&#xff1a;选择器的…

WPF制作Logo,很爽,今后在应用程序中加入Logo轻松,省事!

原文:WPF制作Logo,很爽&#xff0c;今后在应用程序中加入Logo轻松&#xff0c;省事&#xff01; 这是效果&#xff1a; XAML代码&#xff1a;<Viewbox Width"723.955078" Height"356.504883" xmlns"http://schemas.microsoft.com/winfx/2006/xaml…

[React] 11.React -ref的使用

要实现的功能&#xff1a;计算出‘增加’按钮距离浏览器顶部的距离&#xff0c;如下图所示 给按钮增加一个ref属性&#xff0c;一般来说&#xff0c;让它等于一个函数&#xff0c;该属性用于获取元素的dom&#xff0c;代码如下&#xff1a; <button onClick{this.handleB…

Delphi面向对象的编程方法(一)(转)

Delphi面向对象的编程方法&#xff08;一&#xff09;&#xff1a; Delphi的编程语言是以Pascal为基础的。Pascal语言具有可读性好、编写容易的特点&#xff0c;这使得它很适合作为基础的开发语言。同时&#xff0c;使用编译器创建的应用程序只生成单个可执行文件(.EXE)&#x…

使用python的paramiko模块对多台机器更新密码

废话不多说&#xff0c;直接上代码 #!/usr/bin/env python# -*- coding: utf-8 -*-from __future__ import print_functionimport paramiko def connect_modify(ip, username, password, newpass): paramiko.util.log_to_file(syslogin.log) client paramiko.SSHClient(…