自定義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>
)
}
相關文章
- android自定義view(自定義數字鍵盤)AndroidView
- netty自定義Decoder用於自定義協議Netty協議
- Hooks中的useStateHook
- 自定義VIEWView
- 自定義SnackBar
- 自定義_ajax
- 自定義 Anaconda
- 自定義ClassLoader
- 自定義QTimeEditQT
- 自定義 tabBartabBar
- tailwind自定義AI
- 自定義 GitGit
- 自定義元件元件
- 自定義表格
- 自定義LinkedList
- vue自定義全域性元件(或自定義外掛)Vue元件
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- 手寫useState與useEffect
- MySQL自定義排序MySql排序
- JavaScript自定義事件JavaScript事件
- Maven 自定義archeTypeMaven
- SpringBoot 自定義 starterSpring Boot
- 自定義的PopupWindow
- 自定義元件——TitleView元件View
- 自定義目錄
- 自定義 Artisan 命令
- 自定義型別型別
- Gradle 自定義 pluginGradlePlugin
- 自定義Spring ShellSpring
- 自定義JSON名JSON
- phpstudy自定義版本PHP
- Swift 自定義 UIDatePickerSwiftUI
- 自定義ORM框架ORM框架
- Python自定義排序Python排序
- 自定義 Word 模板
- 自定義圓環
- SpringBoot自定義StarterSpring Boot