react18常用的hooks

react18引入的Hooks是一种新的react特性,它允许在无需编写类组建的情况下,使用状态和其他React特性。

一、useState:用于在函数组件中使用状态

import React, {useState} from 'react';

const Counter = () => {
  const [count, setCount] = useState(0);
  const  increment = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  )
}

二、useEffect:用于在函数组件中执行副作用操作(如数据获取,订阅等)

import React, {useState, useEffect} from 'react';

const DataFetching = () => {
  const [data, setData] = useState(null);
  useEffect(()=> {
    fetchData();
  }, []);

  const fetchData = async()=> {
    const response = await fetch('https://api.example.com');
    const data = await response.json();
    setData(data);
  }
  return (
    <div>
      {data ? (
        <ul>
          {data.map((item)=>(
            <li key={item.id}>{item.name}</li>
          ))}
        </ul>
      ) :(
        <p>Loading...</p>
      )}
    </div>
  )
}

三、useContext:用于在函数组件中访问上下文

import React, { useContext } from 'react';

const ThemeContext = React.createContext();
const ThemeProvider = ({ children}) => {
  const theme = 'dark';
  return <ThemeContext.Provider value={theme}>{children
    }</ThemeContext.Provider>
}

const ThemeButton = () => {
  const theme = useContext(ThemeContext);
  return <button style={{background: theme}}>Button</button>
}

const App = () => {
  return (
    <ThemeProvider>
      <ThemeButton/>
    </ThemeProvider>
  )
}

四,useReducer:用于在函数组件中使用Reducer状态管理

import React, { useReducer } from 'react';

const initialState = { count: 0};

const reducer = (state, action) => {
  switch(action.type) {
    case 'increment':
      return {count: state.count + 1};
    case 'decrement':
      return {count: state.count - 1};
    default:
      return state;
  }
}

const Counter = () => {
  const [state, dispatch] = useReducer(reducer, initialState);

  const increment = () => {
    dispatch({type: 'increment'});
  };

  const decrement = () => {
    dispatch({type: 'decrement'})
  };

  return(
    <div>
      <p>Count: {state.count}</p>
      <button onClick={increment}>Increment</button>
      <button onClick={decrement}>Decrement</button>
    </div>
  )
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值