首页 > 其他分享 >08-react修改state数据驱动视图UI的更新【注意和vue的区别】

08-react修改state数据驱动视图UI的更新【注意和vue的区别】

时间:2023-04-30 09:15:25浏览次数:48  
标签:count vue 08 视图 react 修改 state setState

// setState 修改状态 如果是直接修改页面不会改变 使用 setState 修改数据 才会驱动视图的改变

// setState 的原理:修改玩状态之后会调用 render 函数

import ReactDom from "react-dom"

import { Component } from "react"

// react 状态不可变 要重新创建状态,及覆盖原来的状态
class App extends Component {
 // 自增函数
 addFn () {
  console.log(123)
  // 不要直接修改 state 的状态 是无效的
  this.state.a = 12
  console.log(this.state.a)
  this.setState({
   count: this.state.count + 1, // this.state.count++ 是不可以的 这是直接修改当前值了 
   // 数组的push 等方法也不能使用 都是修改当前数组了
   list: [...this.state.list, 123],  // 这样就不会直接修改 this.state.list and 重新给list赋值
   // 数组方法中只要直接修改原数组的方法都不能使用
   // 修改对象的方式 name 是要修改的属性 后面的name属性就会覆盖原来的name属性从而达到目的【驱动视图】
   persion: {
    ...this.state.persion,
    name: "router"
   }
  })
 }
 state = {
  count: 10,
  a: 1,
 }
 render () {
  return (<div>
   <h1>计数器:{this.state.count}</h1>
   {
    // bind 绑定当前的this 然后返回新的函数
    // 或者使用箭头函数 因为箭头函数本身没有this 使用父级的this指向
   }
   <button onClick={this.addFn.bind(this)}>加一</button>
  </div >)
 }
}
// 把租价渲染到页面
ReactDom.render(<App />, document.querySelector("#root"))

setState的修改数据并能驱动视图的原理:

  1. 重写state的数据,进行了覆盖

  2. 修改完成后会立即调用render函数渲染页面UI

标签:count,vue,08,视图,react,修改,state,setState
From: https://www.cnblogs.com/zhulongxu/p/17364881.html

相关文章

  • vue3源码-一、响应式原理reactive的实现
    reactive的实现使用:使用reactive()函数创建一个响应式对象。import{reactive}from'vue'exportdefault{//`setup`是一个专门用于组合式API的特殊钩子函数setup(){conststate=reactive({count:0})//暴露state到模板return{......
  • Vue 异步通信Axios
    使用Axios实现异步通信需要先导入cdn:<scriptsrc="https://unpkg.com/[email protected]/dist/axios.min.js"></script>使用到的数据data.json{"name":"kuang","url":"https://www.bilibili.com/?spm_id_from=333.788.0......
  • 问题解决:Component name "xxx" should always be multi-word vue/multi-word-compone
    如题,原因是单个单词命名时语法检测无法通过,可以在导出组件时通过name属性给组件名加一个后缀,比如Component。<script>exportdefault{//当组件名为一个单词时,语法检查是无法通过的,可以设置name的值为2个单词来规避检查。name:'HomeComponent'}<......
  • dell 7080m black mac bios setup
    BISO设置参考的以下帖子,改了一部分内容USBWakeSupport和WakeonLAN/WLAN保持了默认,因为我用不到网络唤醒功能。​https://github.com/3dudu/dell-optiplex-7080-hackintosh-opencore设置项   值SATAOperation   AHCIIntegratedNIC   EnabledSecureBootEnable ......
  • 超好用的写博客工具VuePress
    VuePress简介VuePress由两部分组成:第一部分是一个极简静态网站生成器,它包含由Vue驱动的主题系统和插件API,另一个部分是为书写技术文档而优化的默认主题,它的诞生初衷是为了支持Vue及其子项目的文档需求。每一个由VuePress生成的页面都带有预渲染好的HTML,也因此具有非常......
  • 使用 ChatGPT 生成 Vue3 响应式导航栏组件
    下面是ChartGPT生成的Vue3响应式导航栏组件。经过简单的调试。基本可实现描述的要求。Nav.vue<template><navclass="nav-container"><divclass="logo-container"><imgsrc="your-logo-here.svg"alt="logo"/></......
  • vuepress 静态博客搭建
    基于npminitvuepress-theme-hopevuepressvuepress是工程目录vuepress/src是博客目录新增博客cdvuepressnpminitvuepress-theme-hopeaddmyblog1就会在vuepress/src的同级目录下创建一个myblog1目录。参考https://theme-hope.vuejs.press/zh/cookbook/t......
  • vuex
       ......
  • MFC-SetImageList给列表视图控件设置图像列表
     CImageList*pImageList;HBITMAPhbmp1;CBitmap*pBitmap1;HBITMAPhbmp2;CBitmap*pBitmap2;HBITMAPhbmp3;CBitmap*pBitmap3;HBITMAPhbmp4;CBitmap*pBitmap4; pImageList=newCImageList();//创建一个CImageList类的指针变量pImageList->Cr......
  • 6.Vue中的路由
    6.路由6.1.介绍6.1.1.vue-routervue中的一个插件库,专门用来实现SPA应用。6.1.2.SPA应用单页Web应用(singlepagewebapplication,SPA)。整个应用只有一个完整的页面。点击页面中的导航链接不会刷新页面,只会做页面的局部更新。数据需要通过ajax请求获取。6.1.3.路由一个路......