自定義useState
1.useState
import React, { useState} from 'react'
// 1.useState
export default function App() {
const [state, setState] = useState({num:1});
return(
<div>
<p>{state.num}</p>
<button onClick={()=>setState({num: state.num+1})}>增加</button>
</div>
)
}
2. useReducer
mport React, { useReducer } from 'react'
const INCREMENT = 'INCREMENT';
const DECREMENT = 'DECREMENT';
const initalState = {num: 0};
const reducer = (state, action) => {
switch (action.type) {
case INCREMENT:
return { num: state.num + 1 };
case DECREMENT:
return { num: state.num - 1 };
default:
return state;
}
}
export default function App() {
const [state, dispatch] = useReducer(reducer, initalState);
return (
<div>
<p>{state.num}</p>
<button onClick={() => dispatch({ type: INCREMENT })}>增加</button>
<button onClick={() => dispatch({ type: DECREMENT })}>減少</button>
</div>
)
}
3.自定義useState
import React, { useReducer, useCallback } from 'react'
const initalState = { num: 0 };
// 自定義useState
function useState(initalState) {
const reducer = useCallback((state, action) => {
console.log(action) // {payload:{num:1}}
return action.payload
})
const [state, dispatch] = useReducer(reducer, initalState);
function setState(payload) {
console.log(payload) // {num: 0}
dispatch({ payload })
}
return [state, setState]
}
export default function App() {
// const [state, dispatch] = useReducer(reducer, initalState);
const [state, setState] = useState(initalState);
return (
<div>
<p>{state.num}</p>
<button onClick={() => setState({ num: state.num + 1 })}>增加</button>
<button onClick={() => setState({ num: state.num - 1 })}>減少</button>
</div>
)
}
相關文章
- 自定義View:自定義屬性(自定義按鈕實現)View
- Hooks中的useStateHook
- 08.Django自定義模板,自定義標籤和自定義過濾器Django過濾器
- 自定義ImageView完成圓形頭像自定義View
- 自定義VIEWView
- 自定義圓環
- 自定義SnackBar
- 自定義_ajax
- 自定義Annotation
- 自定義OrderedMap
- 自定義 Drawable
- 自定義UICollectionViewLayoutUIView
- 自定義UITabBarUItabBar
- 自定義scrollbar
- 自定義Drawable
- 自定義ToastAST
- 自定義吐司
- 自定義表格
- 自定義 GitGit
- tailwind自定義AI
- 自定義 tabBartabBar
- android自定義view(自定義數字鍵盤)AndroidView
- vue自定義全域性元件(或自定義外掛)Vue元件
- android自定義View&自定義ViewGroup(下)AndroidView
- android自定義View&自定義ViewGroup(上)AndroidView
- Android自定義控制元件——自定義屬性Android控制元件
- React 中的 useRef 與 useStateReact
- netty自定義Decoder用於自定義協議Netty協議
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- android自定義鍵盤 自定義身份證鍵盤Android
- Android自定義控制元件之自定義屬性Android控制元件
- GridView 自定義模版自定義修改,刪除,分頁View
- 自定義 Artisan 命令
- 自定義ClassLoader
- 自定義QTimeEditQT
- JavaScript自定義事件JavaScript事件
- 自定義註解
- Maven 自定義archeTypeMaven