当前位置: 首页 > news >正文

百度提交网站收录建筑网址大全

百度提交网站收录,建筑网址大全,内容营销公司,广州工业设计公司有哪些react hooks介绍,包括了state,ref,effect,reducer,context等常见hooks,也包括forwardRef和createContext用法,下面看代码吧,我用的是js写的。每个hook都做了个案例。 // 使用state来…

 react hooks介绍,包括了state,ref,effect,reducer,context等常见hooks,也包括forwardRef和createContext用法,下面看代码吧,我用的是js写的。每个hook都做了个案例。

// 使用state来实现点击加减
import { useState} from 'react'
const UseStateTest=()=> {const [count, setCount] = useState(0)const increment=()=>{console.log('+')setCount(prev=>prev+1)}const decrement=()=>{console.log('-')setCount(prev=>prev-1)}return (<><div><p>count的数值为:{count}</p><button onClick={increment}>点击加一</button><button onClick={decrement}>点击减一</button></div></>)
}export default UseStateTest
// 这里是state和ref配合使用赋予输入框的值
import { useState,useRef } from 'react'const UseRefTest=()=> {const [inputValue,setInputValue]=useState('')const iptRef = useRef()const change=()=>{let value=iptRef.current.valueconsole.log(value)setInputValue(value)}return (<><div><input value={inputValue} ref={iptRef} onChange={change}/></div></>)
}export default UseRefTest
// 这里son子组件配合father使用,达到子组件传值到父组件并且让父组件调用和修改
import { useState,useRef } from 'react'
import SonUseRefTest from './SonUseRefTest'
const FatherUseRefTest=()=> {const sonRef = useRef();const [SonRefItem,setSonRefItem]=useState(null)const onshow=()=>{setSonRefItem(JSON.stringify(sonRef.current))}const onreset=()=>{sonRef.current?.setInputValue('')}return (<><div><h1>父组件</h1><h2>{SonRefItem}</h2><button onClick={onshow}>点击显示</button><button onClick={onreset}>点击重置</button><hr/><SonUseRefTest ref={sonRef}/></div></>)
}export default FatherUseRefTest// 这里son子组件配合father使用,达到子组件传值到父组件并且让父组件调用和修改
import React,{ useState,useRef,useImperativeHandle } from 'react'const SonUseRefTest=React.forwardRef((props,ref)=> {const [inputValue,setInputValue]=useState('')const change=(e)=>{setInputValue(e.target.value)}useImperativeHandle(ref,()=>({inputValue,setInputValue}))return (<><div><h2>子组件</h2><input value={inputValue} onChange={change}/></div></>)
})export default SonUseRefTest

import { useState , useEffect , useReducer} from 'react'
import SonUseReduceTest from './SonUseReduceTest'
const defaultState={count:0,name:'李四',flag:true
}
const reducer=(state=defaultState,action)=>{switch(action.type){case 'change_name':console.log(action)return {...state,name:action.name}case 'change_flag':console.log(action)return {...state,flag:action.flag}case 'son_change_name':console.log(action)return {...state,name:action.name}case 'son_change_flag':console.log(action)return {...state,flag:action.flag}  default : return state;}}
const UseReduceTest=()=> {const [state,dispatch]=useReducer(reducer,defaultState)const changeName=()=>{dispatch({type:'change_name',name:"张三"})}const changeFlag=()=>{dispatch({type:'change_flag',flag:!state.flag})}return (<><div><div>当前name为{String(state.name)}</div><br/><button onClick={changeName}>点击修改name</button><br/><div>当前flag为{String(state.flag)}</div><br/><button onClick={changeFlag}>点击修改flag</button><br/><SonUseReduceTest {...state} dispatch={dispatch}/></div></>)
}export default UseReduceTestimport { useState , useEffect} from 'react'
const SonUseReduceTest=(props)=> {const {dispatch,...state}=propsconst changeName=()=>{dispatch({type:'son_change_name',name:"王五"})}const changeFlag=()=>{dispatch({type:'son_change_flag',flag:!state.flag})}return (<><div><br/><br/><div>SonUseReduceTest</div><div>当前名字为{state.name}</div><button onClick={changeName}>点击修改name</button><div>当前flag为{JSON.stringify(state.flag)}</div><button onClick={changeFlag}>点击修改flag</button></div></>)
}export default SonUseReduceTest

import { useState , useEffect} from 'react'
const UseEffectTest=()=> {const [current, setCurrent] = useState(0)const [pagesize, setPagesize] = useState(10)const [totle] = useState(0)const [count, setCount] = useState(0)const [flag, setFlag] = useState(true)const add=(num)=>{setCount(prev=>prev+num)}const showHide=()=>{setFlag(prev=>!prev)}// 不传递依赖项,就是状态有更新就重新执行effect函数// useEffect(()=>{// 	console.log('刷新了组件!!!')// })// 传递依赖项,只有对应state改变时才会执行effect函数//  useEffect(()=>{// 	console.log('刷新了组件!!!')// },[count])// 传递依赖项为空,只有第一次渲染完成时才会执行effect函数useEffect(()=>{console.log('刷新了组件!!!')},[])return (<><div><div>当前count的为:{count}</div><button onClick={()=>add(1)}>点击+1</button><button onClick={()=>add(-1)}>点击-1</button><br/><button onClick={showHide}>点击修改Flag</button><div>当前flag的为:{String(flag)}</div></div></>)
}export default UseEffectTest
//定义一个context文件,单独存放在src下即为src->context-context,里面具体代码为如下:
import React ,{useState,useRef,useEffect,useContext} from 'react'
const FirstContext=React.createContext()export {FirstContext
}// 非嵌入式context
import React ,{ useState , useEffect , useContext} from 'react'
import LevelB from './LevelB'
import {FirstContext} from '../../../context/context'
const LevelA=()=>{const [count,setCount]=useState(0)const add=()=>{setCount(prev=>prev+1)}return (<><FirstContext.Provider value={{count,setCount}}><div>这是LevelA组件的count值为:{count}</div><button onClick={add}>+1</button><hr/><br/><LevelB/></FirstContext.Provider></>)
}export default LevelAimport React ,{ useState , useEffect , useContext} from 'react'
import LevelC from './LevelC'
const LevelB=()=>{return (<div><div>这是LevelB组件</div><hr/><br/><LevelC/></div>)
}export default LevelBimport React ,{ useState , useEffect , useContext} from 'react'
import {FirstContext} from '../../../context/context'
const LevelC=()=>{const {count,setCount}=useContext(FirstContext)const cadd=()=>{setCount(prev=>prev+1)}return (<><div>这是LevelC组件</div><div>{count}</div><button onClick={cadd}>+1</button></>)
}
export default LevelC

http://www.dtcms.com/a/597053.html

相关文章:

  • TensorFlow深度学习实战——胶囊网络
  • [Linux]学习笔记系列 -- [kernel]kallsyms
  • 手机代理企业网站wordpress农业站模板
  • 门户网站开发的意义ppt 做的最好的网站有哪些
  • 龙岗AI搜索优化亲测效果分享
  • 【多源 BFS】1. 01 矩阵(medium)
  • 物联网工控一体机操作系统选型:安卓、Ubuntu、Debian 场景化决策指南
  • 【代码审计】RuoYi-4.2 五处安全问题分析
  • 如何制作自己的网站并且插口代码wordpress .htaccess 伪静态
  • 【openGauss】谈一谈openGauss对Oracle中lob类型的兼容情况
  • 【自然语言处理】WordNet与知网:支撑自然语言理解的词汇知识库双璧
  • 怎么自己弄一个网站编程课程收费标准
  • Vue 项目实战《尚医通》,登录组件获取验证码,笔记25
  • 【无标题】六边形拓扑量子计算:NP完全问题的统一解决框架
  • IDEA下载
  • 网站自己做需要多少钱中国住建部和城乡建设部
  • 电磁波传播理论的数学描述和python模拟
  • 符合网络营销网站建设郑州威盟网站建设公司怎么样
  • 金阊企业建设网站公司wordpress教程cms
  • 李沐深度学习笔记D3-基础的优化方法
  • 【MCP:七千字图文详解】从灵感闪现到生态确立,全链路解读与实战
  • GitHub 热榜项目 - 日榜(2025-11-11)
  • OpenCV图像亮度与对比度调整
  • 应急响应基础
  • jsp技术做网站有什么特点免费软件下载网站入口正能量
  • WSL2下Ubuntu20.04图形化环境配置
  • Ubuntu单用户
  • h5制作网站哪个好杭州做网站的公司
  • 软装设计师常用网站英文网站建设一般多少钱
  • 数据结构之顺序表(动态)