尚硅谷-react教程-求和案例-纯react版本-笔记

时间:2024-10-27 12:56:54
nvm -v
nvm install 16.20.2
nvm use 16.20.2
nvm install -g create-react-app
create-react-app redux_test

  • public/index.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>redux</title>
    </head>
    <body>
        <div id="root"></div>
    </body>
</html>
  • src/App.jsx
import React, {Component} from 'react';
import Count from "./components/Count";

class App extends Component {
    render() {
        return (
            <div>
                <Count/>
            </div>
        );
    }
}

export default App;
  • src/index.js 入口文件
import React from "react";
import ReactDOM from 'react-dom'
import App from './App'

ReactDOM.render(<App/>,document.getElementById('root'))
  • src/components/Count/index.jsx
import React, {Component} from 'react';

class Count extends Component {
    state = {count:0}
    // 加法
    increment=()=>{
        const {value} = this.selectNumber
        const {count} = this.state
        this.setState({count:count+value*1})
    }
    // 减法
    decrement=()=>{
        const {value} = this.selectNumber
        const {count} = this.state
        this.setState({count:count-value*1})
    }
    // 奇数再加
    incrementIfOdd=()=>{
        const {value} = this.selectNumber
        const {count} = this.state
        if(count % 2 !== 0) {
            this.setState({count:count+value*1})
        }
    }
    // 异步加
    incrementAsync=()=>{
        const {value} = this.selectNumber
        const {count} = this.state
        setTimeout(()=>{
            this.setState({count:count+value*1})
        },500)
    }
    render() {
        return (
            <div>
                <h1>当前求和为:{this.state.count}</h1>
                <select ref={c => this.selectNumber = c}>
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                </select>&nbsp;
                <button onClick={this.increment}>+</button>&nbsp;
                <button onClick={this.decrement}>-</button>&nbsp;
                <button onClick={this.incrementIfOdd}>当前求和为奇数再加</button>&nbsp;
                <button onClick={this.incrementAsync}>异步加</button>&nbsp;
            </div>
        );
    }
}

export default Count;