react的传值问题

1:父传子

props

function father(){
   //父类传子类
   const [num setNum]=useSate(0)
  
   
   return <Child num={num} setNum={setNum}/>
}
const Child=(props)=>{
    console.log(props.name);
     //父传子
    <button onClick=()=>{props.setNum(2)}><button>
}

context使用

const nameContext=ceateContext()
function grand(){
  <nameContext provide>
    const [name,setName]=useState('aaa')
    <Child  value={{name,setName}}/>
  </nameContext provide>
}
function Child()=>{

  const a= useContext(nameContext)
    return(
        <h2>{name}</h2>
        <button onClick={()=>setName('bbb)}></button>
    )
}

memo与useCallback与useMemo的使用

useMemo返回缓存的变量useCallback返回缓存的函数,都会在组件第一次渲染的时候执行,之后会在其依赖的变量发生改变时再次执行;并且这两个hooks都返回缓存的值

解决问题:父组件每次刷新,子组件都会打印日志

function father(){
    //父类传子类
    const [num setNum]=useSate(0)
    const doThing=useCallback(()=>{setNum+1},[])//使用usecallback父类更改子类不会
    const doThing=useMemo(
        return ()=>{setNum+1},[]
    )
    return  <button doThing={doThing}><button>
    <Child />
 }
 const Child=memo((props)=>{
     console.log(props.name);
      //父传子
     <button onClick=()=>{props.doThing}><button>
 })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值