返回

ReactJS 高阶用法详解

见解分享

ReactJS 是一个强大的 JavaScript 库,用于构建用户界面。它以其组件化、声明式和高效的特性而著称。在 ReactJS 中,我们可以使用函数组件来定义组件,函数组件是 ReactJS 中引入的一种新型组件,它使用 JavaScript 函数来定义组件的行为。函数组件与传统的类组件相比,具有更简单的语法和更强的灵活性。

函数组件中可以使用 Hook,Hook 是 ReactJS 中引入的一种新特性,它允许我们在函数组件中使用 state 和生命周期方法。Hook 是一个函数,它可以在函数组件中调用,并且可以访问和修改组件的状态。常用的 Hook 有 useState、useEffect、useContext、useReducer、useRef、useMemo 和 useCallback。

useState

useState Hook 用于在函数组件中管理状态。它接受一个初始值作为参数,并返回一个包含当前状态值和一个更新状态的函数的数组。我们可以通过数组的第二个元素来更新状态值。

const [count, setCount] = useState(0);

const incrementCount = () => {
  setCount(count + 1);
};

useEffect

useEffect Hook 用于在组件挂载、更新和卸载时执行某些副作用。它接受两个参数,第一个参数是一个回调函数,该函数会在组件挂载、更新和卸载时执行。第二个参数是一个依赖数组,如果依赖数组中的值发生变化,则回调函数也会被执行。

useEffect(() => {
  // 组件挂载时执行的代码
}, []);

useEffect(() => {
  // 组件更新时执行的代码
}, [count]);

useEffect(() => {
  // 组件卸载时执行的代码
  return () => {
    // 清理工作
  };
}, []);

useContext

useContext Hook 用于在组件中使用 Context。Context 是 ReactJS 中一种共享数据的方式,它允许组件在不直接传递 props 的情况下访问数据。

const MyContext = React.createContext();

const MyComponent = () => {
  const value = useContext(MyContext);

  return <div>{value}</div>;
};

useReducer

useReducer Hook 用于在组件中管理状态。它接受一个 reducer 函数和一个初始值作为参数,并返回一个包含当前状态值和一个更新状态的函数的数组。reducer 函数是一个纯函数,它接受当前状态和一个动作作为参数,并返回一个新的状态。

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

const [count, dispatch] = useReducer(reducer, 0);

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

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

useRef

useRef Hook 用于在组件中创建一个可变的引用。可变引用是一个特殊的对象,它可以存储任何类型的值,并且该值不会随着组件的重新渲染而改变。

const ref = useRef(null);

const MyComponent = () => {
  const inputRef = useRef(null);

  useEffect(() => {
    inputRef.current.focus();
  }, []);

  return <input ref={inputRef} />;
};

useMemo

useMemo Hook 用于在组件中缓存一个计算结果。它接受一个函数和一个依赖数组作为参数,并返回一个包含计算结果和一个布尔值