Effect Hook 可以让你来完成一些类似于class中生命周期的功能;
import React, { useState, useEffect } from 'react';
function UseEffectDemo() {
const [counter, setCounter] = useState(0);
useEffect(() => {
document.title = "Counter" + counter;
});
return (
Counter: {counter}
);
}
export default UseEffectDemo;
useEffect的清除:
在class组件的编写过程中,某些副作用的代码,我们需要在componentWillUnmount中进行清除:
useEffect传入的回调函数A本身可以有一个返回值,这个返回值是另外一个回调函数B:
为什么要在 effect 中返回一个函数?
这是 effect 可选的清除机制。每个 effect 都可以返回一个清除函数;
React 何时清除 effect?
useEffect实际上有两个参数:
Context Hook允许我们通过Hook来直接获取某个Context的值;
App.js定义共享
export const userContext = createContext();
export const ThemContext = createContext();
App.js还是需要包裹
function App() {
return (
{/*
*/}
{/* */}
);
}
使用(超简单)
import React, { useContext } from 'react'
import { userContext } from './App'
export default function UserContextDemo() {
const { name } = useContext(userContext);
return 用户名:{name}
}
useReducer仅仅是useState的一种替代方案:
使用计数来举个例子:
import React, { PureComponent, useReducer } from 'react'
// 定义reducer函数,接收state和action,根据action.type返回新的state
function reducer(state, action) {
switch (action.type) {
case 'INCRESE': // 增加
return { count: state.count + 1 };
case 'DECRESE': // 减少
return { count: state.count - 1 };
default:
throw new Error(); // 未知action抛出错误
}
}
export default function UseReducer() {
// 定义初始状态
const initialState = {
count: 0
}
// useReducer返回当前state和dispatch方法
const [state, dispatch] = useReducer(reducer, initialState);
return (
{/* 显示当前count */}
number{state.count}
{/* 点击按钮派发INCRESE和DECRESE action */}
)
}
useCallback实际的目的是为了进行性能的优化。
如何进行性能的优化呢?
useMemo返回的也是一个 memoized(记忆的) 值;
在依赖不变的情况下,多次定义的时候,返回的值是相同的;
Effect Hook 可以让你来完成一些类似于class中生命周期的功能;
import React, { useState, useEffect } from 'react';
function UseEffectDemo() {
const [counter, setCounter] = useState(0);
useEffect(() => {
document.title = "Counter" + counter;
});
return (
Counter: {counter}
);
}
export default UseEffectDemo;
useEffect的清除:
在class组件的编写过程中,某些副作用的代码,我们需要在componentWillUnmount中进行清除:
useEffect传入的回调函数A本身可以有一个返回值,这个返回值是另外一个回调函数B:
为什么要在 effect 中返回一个函数?
这是 effect 可选的清除机制。每个 effect 都可以返回一个清除函数;
React 何时清除 effect?
useEffect实际上有两个参数:
Context Hook允许我们通过Hook来直接获取某个Context的值;
App.js定义共享
export const userContext = createContext();
export const ThemContext = createContext();
App.js还是需要包裹
function App() {
return (
{/*
*/}
{/* */}
);
}
使用(超简单)
import React, { useContext } from 'react'
import { userContext } from './App'
export default function UserContextDemo() {
const { name } = useContext(userContext);
return 用户名:{name}
}
useReducer仅仅是useState的一种替代方案:
使用计数来举个例子:
import React, { PureComponent, useReducer } from 'react'
// 定义reducer函数,接收state和action,根据action.type返回新的state
function reducer(state, action) {
switch (action.type) {
case 'INCRESE': // 增加
return { count: state.count + 1 };
case 'DECRESE': // 减少
return { count: state.count - 1 };
default:
throw new Error(); // 未知action抛出错误
}
}
export default function UseReducer() {
// 定义初始状态
const initialState = {
count: 0
}
// useReducer返回当前state和dispatch方法
const [state, dispatch] = useReducer(reducer, initialState);
return (
{/* 显示当前count */}
number{state.count}
{/* 点击按钮派发INCRESE和DECRESE action */}
)
}
useCallback实际的目的是为了进行性能的优化。
如何进行性能的优化呢?
useMemo返回的也是一个 memoized(记忆的) 值;
在依赖不变的情况下,多次定义的时候,返回的值是相同的;