首页 > 其他分享 >[React] State and Callbacks Don’t Mix Well in React

[React] State and Callbacks Don’t Mix Well in React

时间:2022-12-21 16:23:05浏览次数:40  
标签:function count Don setCount React Mix saveInfo import

// Doesn't work

import React from 'react'
import { saveInfo } from './api'

export default function App() {
    const [count, setCount] = React.useState(0)
    
    async function onClick() {
        // because this is async api call
        // react will wait until this api resolve
        // during the waiting time, react component won't rerender
        // therefore count will be 1
        await saveInfo()
        setCount(count + 1)
    }
    
    return (
        <>
         <h1>Count: {count}</h1>
         <button onClick={onClick}>+1</button>
        </>
    )
}

 

Solution:

import React from 'react'
import { saveInfo } from './api'

export default function App() {
    const [count, setCount] = React.useState(0)
    
    async function onClick() {
        await saveInfo()
        setCount(count => count + 1)
    }
    
    return (
        <>
         <h1>Count: {count}</h1>
         <button onClick={onClick}>+1</button>
        </>
    )
}

 

Even better:

import React from 'react'
import { saveInfo } from './api'

export default function App() {
    const [count, setCount] = React.useState(0)
    const inc = () => setCount(count => count + 1)
    
    async function onClick() {
        await saveInfo()
        inc()
    }
    
    return (
        <>
         <h1>Count: {count}</h1>
         <button onClick={onClick}>+1</button>
        </>
    )
}

 

标签:function,count,Don,setCount,React,Mix,saveInfo,import
From: https://www.cnblogs.com/Answer1215/p/16996486.html

相关文章

  • 论文解读:Sequence to Sequence Mixture Model for Diverse Machine Translation
    论文解读:SequencetoSequenceMixtureModelforDiverseMachineTranslation  机器翻译是自然语言处理中比较热门的研究任务,在深度学习背景下,通过神经网络搭建的机器翻......
  • react页面登录重定向中遇到的困惑
    是这样的模拟写了一点后端json数据点击登录跳转到首页,目的是我开启,node服务之前,务必进到登录页首页数据是拿到了。请求是发起异步请求,数据也打印出来了。问题是,路由......
  • PHP Web System Optimization(undone)
    PHPOptimization目录0.引言1.PHPPool2.listen3.ProcessManage(PM)4.pm.max_children5.PHPDBConnectionPool(数据库连接池) 0.引言0x1......
  • react需要的三个文件
    react需要的三个文件<scriptsrc="https://unpkg.com/react@16/umd/react.development.js"crossorigin></script><scriptsrc="https://unpkg.com/react-dom@16/umd/r......
  • React.js 修改文本中数字样式
    exportfunctionnumberToColor(text,color='#635BFF',size='12px'){letreg=/(\d+)/g;returntext.replace(reg,`<spanstyle="color:${color};size:$......
  • 问:你是如何进行react状态管理方案选择的?
    前言:最近接触到一种新的(对我个人而言)状态管理方式,它没有采用现有的开源库,如redux、mobx等,也没有使用传统的useContext,而是用useState+useEffect写了一个发布订阅者模式进......
  • 前端一面必会react面试题(附答案)
    前言:最近接触到一种新的(对我个人而言)状态管理方式,它没有采用现有的开源库,如redux、mobx等,也没有使用传统的useContext,而是用useState+useEffect写了一个发布订阅者模式进......
  • 问:React的useState和setState到底是同步还是异步呢?
    先来思考一个老生常谈的问题,setState是同步还是异步?再深入思考一下,useState是同步还是异步呢?我们来写几个demo试验一下。先看useState同步和异步情况下,连续执行两......
  • 社招前端一面必会react面试题集锦
    vue或者react优化整体优化虚拟dom为什么虚拟dom会提高性能?(必考)虚拟dom相当于在js和真实dom中间加了一个缓存,利用domdiff算法避免了没有必要的dom操......
  • Vue3 清空Reactive定义的数组
    shallowRef定义得数组清空letcomponent_list=shallowRef([{unit:Head,name:'Head',id:1},{unit:TopClass,name:'TopClass',id:2},])component_lis......