Hooks操作步骤

使用useState

第1步:引入useState

import React,{ useState} from 'react';

第2步:获取useState中的数据

const App = ()=>{
    
	let [value,setValue] = useState('hello')
    
    //修改的函数
    const update = ()=>{
        setValue('world')
    }

	return (
    	<div>
        	{value}
            <button onClick={update}>修改</button>
        </div>
    )
}

使用useEffect

第1步:引入useEffect

import React,{ useEffect } from 'react';

第2步:使用useEffect函数

const App = ()=>{
    
	let [value,setValue] = useState('hello')
    
    //修改的函数
    const update = ()=>{
        setValue('world')
    }
    
    //useEffect函数作为生命周期函数使用
    useEffect(()=>{
        console.log('useEffect....')
    })

	return (
    	<div>
        	{value}
            <button onClick={update}>修改</button>
        </div>
    )
}

使用useReducer

import React,{ useState, useEffect, useLayoutEffect, useReducer } from 'react';
import ReactDOM from 'react-dom';

const defaultState = {
  value: "hello"
}

const reducer = (state,action)=>{

  if(action.type === 'update'){
    let copyState = JSON.parse(JSON.stringify(state))
    copyState.value = action.value
    return copyState
  }

  return state
}

const App = ()=>{

  let [state,dispatch] = useReducer(reducer,defaultState)

  const handleUpdate = ()=>{
      let action = {
         type: 'update',
         value: 'world'
      }
      dispatch(action)
  }

  return (
    <div>

      <button onClick={handleUpdate}>修改</button>

      { state.value }
      
    </div>
  )
}


ReactDOM.render(
  <App />
  ,document.getElementById('root'));


操作useContext

import React,{ useState, createContext, useContext } from 'react';
import ReactDOM from 'react-dom';

//1、创建Context上下文对象
const Context = createContext()

//2、声明根组件APP
const App = ()=>{


  let  [value,setValue] = useState(0)

  //3、在APP组件中需要使用 Context.Provider 管理上下文对象中的数据
  return (
    <Context.Provider value={{value,setValue}}>
      <div>
        <Father></Father>
      </div>
    </Context.Provider>
  )
}

//4、声明父组件,在父组件中获取 Context 上下文对象中的数据
const Father = ()=>{

  let {value,setValue} = useContext(Context)

  const add = ()=>{
    setValue(value+1)
  }

  return (
    <div>
      Father组件:{value} &nbsp;&nbsp; <button onClick={add}>父组件中修改</button>
      <Child></Child>
    </div>
  )
}

//5、声明子组件,在组件中获取 Context 上下文对象的数据
const Child = ()=>{

  let {value,setValue} = useContext(Context)

  const add = ()=>{
    setValue(value+1)
  }

  return (
    <div>
      Child组件:{value} &nbsp;&nbsp;  <button onClick={add}>子组件中修改</button>
    </div>
  )
}

ReactDOM.render(
  <App />
  ,document.getElementById('root'));


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值