• React三属性之:state


    作用:

    state是用于在组件中存储数据,称之为"状态机"

    类似于vue2中的data属性,不过操作和vue中data差别很大.

    使用:

    this.state的值不能直接进行赋值操作,如:this.state.value_str = '修改的值',需要使用this.setState方法
    this.setState({修改的key:修改的value},数值发生改变后的函数),只会改变修改的属性,state中的其他属性不会变化

    1. import { cloneDeep } from "lodash";
    2. import React from "react";
    3. class StateTest extends React.Component{
    4. state = {
    5. value_str:'字符串',
    6. value_arr:[
    7. {
    8. value:'数据1',
    9. label:'标题1'
    10. },
    11. {
    12. value:'数据2',
    13. label:'标题2'
    14. }
    15. ],
    16. value_obj:{
    17. name:'王惊涛',
    18. age:27,
    19. }
    20. }
    21. //修改字符串的值
    22. changeValueStr = (e)=>{
    23. this.setState({
    24. value_str:e.target.value
    25. },()=>{
    26. console.log(this.state,'状态机的值发生改变')
    27. })
    28. }
    29. //修改数组的值
    30. changeValueArr = (e,i)=>{
    31. //写法1
    32. // let List = cloneDeep(this.state.value_arr)
    33. // this.setState({value_arr:List.map((item,index)=>index === i?{...item,'value':e.target.value}:item)})
    34. //写法2
    35. let newItem = {
    36. label:this.state.value_arr[i].label,
    37. value:e.target.value
    38. }
    39. let List = cloneDeep(this.state.value_arr)
    40. List[i] = newItem
    41. this.setState({value_arr:List})
    42. }
    43. //修改对象的值
    44. changeValueObj = ()=>{
    45. this.setState({value_obj:{
    46. name:'Jingtao Wang',
    47. age:33
    48. }})
    49. }
    50. render(){
    51. return(
    52. <div>
    53. <h4>字符串操作h4>
    54. <p><span>字符串值span><input type="text" value={this.state.value_str} onInput={(e)=>{this.changeValueStr(e)}}/>p>
    55. <h4>数组操作h4>
    56. {this.state.value_arr.map((item,index)=><p><span>{item.label}span><input value={item.value} onInput={(e)=>this.changeValueArr(e,index)}>input>p>)}
    57. <h4>对象操作h4>
    58. <p>名字:{this.state.value_obj.name} 年龄:{this.state.value_obj.age}p>
    59. <button onClick={this.changeValueObj}>修改数据button>
    60. div>
    61. )
    62. }
    63. }
    64. export default StateTest

    效果如下

  • 相关阅读:
    STM32之DMA
    【Python】进阶学习:一文了解NotImplementedError的作用
    DHCP执行流程详解
    【CC3200AI 实验教程 1】疯壳·AI语音人脸识别(会议记录仪/人脸打卡机)-开发环境搭建
    java中的原码、补码、反码
    Mybiosource丨Mybiosource重组病毒果蝇蛋白wntless方案
    正则表达式中的 ?
    C++ Reference: Standard C++ Library reference: C Library: cwchar: wcsrtombs
    轻量级的Python IDE —— Thonny
    UUCTF(公共赛道)
  • 原文地址:https://blog.csdn.net/m0_54741495/article/details/132697254