react数据操作

import React, { Component } from "react"
export default class State extends Component {
    constructor() {
        super()
        this.state = {
            name: '张三',
            num: 10,
            json: {
                story: "呼号浩特",
                hobby: '杏子'
            },
            arr:[
                <li>杏花</li>,
                <li>杏仁</li>,
                <li>杏树</li>,
                <li>杏皮</li>,
                <li>杏壳</li>
            ]
        }
    };
    changeName (v) {
        // this.state.name=v
        // console.log(this.state.name);//但是不会引起页面的重新渲染
        // 如果要让页面重新渲染要使用 setstate方法
        this.setState({
            name: v
        })
    }

    changesex () {
        // 自加1
        // this.setState({
        //     num: ++this.state.num //++只能在前 不能在后(详解++在前和在后的原理)
        // })

        // 自加10 setState是异步操作  console.log()是同步操作  典型难忘
        this.setState({
            num:this.state.num+10
        })
        console.log(this.state.num);
    }
    changehobby (v) {
        //错误方式1
        // this.state.json.hobby=v //直接修改肯定是不行的
        //错误方式2
        // this.setState({
        //     json:{
        //         hobby:v //修改了  但是json就一个值了  
        //     }
        // })



        //正确方式1
        // 1、取出来(全部)
        // var hb = this.state.json
        // // 2、修改
        // hb.hobby = v
        // // 3、放回去
        // this.setState({
        //     json:hb
        // })

        //正确方式2
        this.setState({
           json:{
            ...this.state.json,
            hobby:v
           }
        })


    }
    render () {
        return (
            <div>
                <p>{this.state.name}</p>
                <button onClick={() => this.changeName("李四")}>哈哈哈</button>


                <p>{this.state.num}</p>
                <button onClick={this.changesex.bind(this)}>++</button>

                <p>{this.state.json.story}</p>
                <p>{this.state.json.hobby}</p>
                <button onClick={this.changehobby.bind(this, '钵钵鸡')}>吃饭</button>

                {
                    this.state.arr
                }
            </div>
        )
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值