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

网站做电源/李飞seo

网站做电源,李飞seo,旅游公司网站开发与实现,怎么做网站的导航条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.lryc.cn/news/580904.html

相关文章:

  • 管理咨询公司怎么开展业务/网站seo外链平台
  • 韩国男女真人做视频网站/百度seo搜搜
  • 北京网站优化快速排名/晋城seo
  • html5 后台网站模板/网站平台推广
  • 廊坊网站建设-商昊网络/流量精灵app
  • 用织梦做的网站怎么管理/国内优秀网页设计赏析
  • wordpress兼容php版本/seort什么意思
  • asp做旅游网站毕业论文/杭州seo薪资水平
  • 怎么给网站做访问量/百度官网app下载安装
  • java实现网站建设/seo是指
  • 网站建设可以帮助企业/seo服务公司招聘
  • 网站界面尺寸/seo应该怎么做
  • 宁波住房和建设局网站/专业做灰色关键词排名
  • 网站换域名图片这么设置/软文网站模板
  • vps wordpress mysql优化/专业seo关键词优化
  • 无锡营销型网站制作/杭州关键词优化平台
  • 重庆涪陵网站建设/郑州纯手工seo
  • 安卓android官网下载/seo有哪些优化工具
  • 网站怎么推广出去/网站排名费用
  • 苏州知名高端网站建设/全国人大常委会
  • 增城做网站公司/网站seo教材
  • 学做日本料理的网站/什么平台打广告比较好免费的
  • 资生堂网站建设/太原网站建设谁家好
  • 海西州公司网站建设/网站建站
  • 免费不良正能量网站链接/logo网站设计
  • 北京网站建设有限公司/免费网站安全软件下载
  • 如何做网站更新/百度广告一天多少钱
  • 网站降权/搜索引擎优化内容包括哪些方面
  • 大型网站建设方案/网络营销推广方案模板
  • wordpress名片模板/青山seo排名公司