react-hook的基本使用

1.useState

  用来hook数据

import {useState} from 'react'

function App () {
   //const ['数据名称','操作数据的方法'] =useState(初始值)
   const [num, setNum] = useState(0)
   //定义给ui组件绑定的处理数据方法
   const hanlde = () => {
   setNum(num + 1)
  }

return(
  < onClick={this.hanlde} div />
)

}

2.useEffect

  用来代替生命周期函数,类似与componentDidMount

import { useState,useEffect } from "react"

function App() {
  // hook操作数据
  const [count, setCount] = useState(0)
  // hook代替生命周期函数
  useEffect(()=>{
    document.title= `点击了${count}次`
  })
  const increment = () => {
    setCount(count +1)
  }
  return (
    <button onClick={increment}>点击了{count}次</button>
  );
}

export default App;

可以在其中定义请求数据的函数,但不能直接在内使用async await关键词,可以在外定义后再拿到useEffect里进行调用

 

3.useContext

  代替reactContext

//导入useContext
import {useContext} from 'react'

// 创建Context
const userNameContext = react.createContext()

// 定义要传入的数据
const username = 'cloudgaps'

//在需要传递数据的根组件上使用Provider
  <userNameContext.Provider>
     <APP / value={ username }>
  </ userNameContext.Provider>

//在需要使用数据的组件内部使用数据
function App() {
  //使用useContext接受传递过来的value
 const value = useContext(userNameContext )
  return (
    <div> hello {value} </div>
  );
}

4.useReducer

import {  useReducer } from "react";
import React from 'react'




function App() {
  // 创建需要被管理的数据的初始状态
  const initialState = {
    conut: 0
  }
  // 创建管理数据的方法 state是组件的状态 action用来告诉reducer应该怎样处理数据
  function reducer(state, action) {
    console.log(state.count)
    switch (action.type) {
      case 'increment':
        return {
          conut: state.count + 1
        }
      default:
        return initialState
    }
  }
  //用useReducer定义state和dispatch的方法
  const [state, despatch] = useReducer(reducer, initialState)
  return (
    <div>
      <div>{state.count}</div>
      <button onClick={() => { despatch({ type: 'increment' }) }}>增加</button>
    </div>
  );
}

export default App;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值