寻找最常自定义hooks-----状态重置篇

802 阅读2分钟

寻找最常自定义hooks-----状态重置篇

什么是状态重置

很多对象拥有初始值,例如

const [value,setValue] = useState('hooks')

字符串hooks,就是变量value的初始值,后面想改变value的值需要调用setValue方法。

那么有些时候,在value改变N次之后,我们想让他回到最开始的值(就是需要把value重置为初始值hooks,虽然可以直接setValue('hooks'),但是不美观也不直观,在更复杂的业务场景中不实用)

所以需要我们自己自定义hooks-----状态重置

重点!!!这个知识点主要是上一篇文章的附属产物,更加详细的内容请关注下一篇文章!!!

应用场景

1.组件销毁,需要状态管理的数据重置

2.需要数据还原的相关业务(例如有些地方form,修改完成后不满意,重置为初始状态)

上代码

code.png

代码介绍

useResetState主要是利用了闭包的属性,保留的最开始的初始值在闭包内

优点

在多个值都需要状态重置时候,不需要记住初始值,

例子 set.png 例如变量c的值其实是由组件外部传递进来的,就像antd很多组件的defaultValue属性,初始化时生效。

我们本身并不知道其一开始的值是什么,利用闭包机制将初始值存储,就可以重置成功了。

缺点

只适用于需要状态重置的相关业务场景。

hooks代码

import { useState } from 'react';
import { Input, Button } from 'antd';
​
function useResetState(val) {
  const [value, setValue] = useState(val);
  const resetValue = () => {
    setValue(val);
    return val;
  };
  return [value, setValue, resetValue];
}
​
export default function Text() {
  const [val, setVal, resetVal] = useResetState('hello world');
  const [val1, setVal1, resetVal1] = useResetState({ a: 1, b: 2 });
​
  const onChange = (e) => {
    setVal(e.target.value);
  };
  const onClick = () => {
    resetVal();
  };
  return (
    <div>
      <Input value={val} onChange={onChange}></Input>
      <Button onClick={onClick}>重置</Button>
      <div>{val1.a}</div>
      <div>{val1.b}</div>
    </div>
  );
}
​

总结

每天进步亿点点,升职加薪迎娶白富美不是梦!!!祝愿我美梦成真。。。