首页 > 其他分享 >自定义hooks

自定义hooks

时间:2022-12-02 19:12:53浏览次数:38  
标签:const 自定义 hooks counter useStateHooks value obj

import React,{useState,useEffect} from 'react';

export const useStateHooks=(val:any)=>{
    let [value,setValue]=useState(val);
    const setFunc=(v:any)=>{
        setValue(v);
        return v;
    }
    return {
        value,setFunc
    };
}

import React,{useState,useEffect,useImperativeHandle,useCallback,useReducer} from 'react';
import {useStateHooks} from "../hooks/useStateHooks";

export const Test=()=>{
    let obj=useStateHooks(1);
    const change=()=>{
        const newVal=obj.setFunc(obj.value+1);
        console.log(obj.value,newVal);
    }
    return (
        <div>
            <span>数据:{obj.value}</span>
            <button onClick={change}>改变</button>
        </div>
    )
}

这个函数肯能放在status内部执行,多有函数内部可以获取到最新值


注意,class组件和hooks都可以
如果将add改为先加1再加2,会发现代码只执行了最后一个加2,加1被忽略了,如:
1234 const add = () => {    setCounter(counter + 1)    setCounter(counter + 2)} 
解决方法是将setState的参数写成函数形式
1234 const add = () => {    setCounter(counter => counter + 1)    setCounter(counter => counter + 2)} 

标签:const,自定义,hooks,counter,useStateHooks,value,obj
From: https://www.cnblogs.com/Arborblog/p/16945389.html

相关文章

  • 实现了Spring的Aware接口的自定义类什么时候执行的?
     在之前的内容中​​Spring的Aware接口有什么用?​​了解到用户可以通过实现相应的Aware接口来获取spring框架提供的能力,俗称“攀亲戚”以如下代码为例,自定义类MyAware实现......
  • IDEA自定义注释模板-版本2
    配置注释模板:1.类:Templatetext:/***@description:TODO*@authorliuyachao*@date$DATE$$TIME$*/Editvariables:2.方法:Templatetext:*$params$*......
  • 【FastDfs】Docker自定义构建ARM架构的FastDfs镜像
    由于服务器环境为ARM架构,在部署fastdfs时,发现网上的镜像几乎都是X86_64的,不同架构的镜像还不能通用,这个就有点烦了。。。。。由于之前没有从头编译制作过镜像,步步都是坑,在......
  • vue3自定义修饰符
    v-model 有一些内置的修饰符,例如 .trim,.number 和 .lazy都是对输入的数据做过滤处理vue也可以自定义实现创建一个自定义的修饰符 capitalize,它会自动将 v-model......
  • vue3 实现自定义 v-model
    在vue中,form表单输入可以通过v-model实现双向数据绑定,例如:<inputv-model="text"/>{{text}}在表单中输入时,页面展示的data-text也会相应改变如果是封装......
  • .NET CORE读取自定义配置文件到Configuration中
    微软只提供了以下可以读取配置的方式,其中文件配置只能读取INI、JSON和XML文件,如果我想对其他自定义文件进行读取,那么我们可以使用自定义配置提供程序进行配置  比如,......
  • cxf中自定义拦截器限制IP
    importjava.util.List;importjavax.servlet.http.HttpServletRequest;importorg.apache.cxf.interceptor.Fault;importorg.apache.cxf.message.Message;importorg.apac......
  • Power App Portal列表自定义筛选器
     因为Portal的列表筛选,只有三种样式,文本框、单选和下拉框,如果要用到其他的筛选那就不能配置它了,所以我们可以使用它的FetchXml的筛选,来达到我们想要的效果,例如做一个日......
  • vue自定义指令实现拖拽元素改变元素的宽度
    //自定义指令directives:{drag:{inserted:function(el){constdragDom=el;dragDom.style.cursor="e-resize";dragD......
  • SpringCloud(八) - 自定义token令牌,鉴权(注解+拦截器),参数解析(注解+解析器)
    1、项目结构介绍项目有使用到,redis和swagger,不在具体介绍;2、手动鉴权和用户信息参数获取(繁杂,冗余)2.1用户实体类/***CreatedOn:4/11/2022.*<p>*Author......