hooks中,useState异步问题解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hooks中,useState异步问题解决方案相关的知识,希望对你有一定的参考价值。

参考技术A 在hooks中,修改状态的是通过useState返回的修改函数实现的.它的功能类似于class组件中的this.setState().而且,这两种方式都是异步的.可是this.setState()是有回调函数的,那useState()呢?

一个同事询问如何根据某个状态值发生改变后再去执行某个方法,而且需要在这个方法里去取得这个值

结合useEffect进行监听:一句话概括,我不需要知道你设置完成没有.只要useEffect监听到你值变化了,再进行操作.

一个函数里是可以写多个useEffect的,不用去考虑会影响到性能啥的,可以只针对要监听的值进行书写即可

react hooks useState 赋值优化解决方案

//性能优化一点,极少成多,网页会成为大厂所青睐的网页

//如下一个hooks函数

import React,{useState} from ‘react‘;
// import TodoList from ‘./TodoList‘;
function App() {
let a=1;
   console.log(1) //可以看到数据更新,就执行一次,上面的let a 也执行,数据较多时损耗性能。
  const [b,setb]=useState(a);  //hooks解构赋值
  return (
    <div className="App">
      {b}
      <button onClick={()=>{setb(b+1)}}></button>
    </div>
  );
}

export default App;

  //可以采用如下方式

import React,{useState} from ‘react‘;
// import TodoList from ‘./TodoList‘;
function App() {
  // console.log(1)
  const [b,setb]=useState(()=>{
    let a=1;
    console.log(a);  //可以看到采用这种方式,数据只在第一次初始化,当数据较多时,节省性能。
    return a;
  });
  return (
    <div className="App">
      {b}
      <button onClick={()=>{setb(b+1)}}></button>
    </div>
  );
}

export default App;

  

以上是关于hooks中,useState异步问题解决方案的主要内容,如果未能解决你的问题,请参考以下文章

react hooks useState 赋值优化解决方案

React hooks的useState原理

react使用hook——useState的坑

useState和useEffect

React Hook的注意事项--useState

使用 JSON 数据输出数组数组而不是一个数组来反应 useState Hooks