unstate-next 的使用
Install#
Code-Test
npm install --save unstated-next
yarn add unstated-next
createContainer#
import { useState } from "react";
import { createContainer } from "unstated-next"
const useCounter = (props: any) => {
const { initNum } = props;
const [num, changeNum] = useState<number>(initNum);
let decrement = () => changeNum(num - 1)
let increment = () => changeNum(num + 1)
return {num, decrement, increment};
}
export const Counter = createContainer(useCounter);
use Provider && initialState#
import './App.css'
import { Counter } from './Context'
import {TestCounter} from './TestCounter'
export default function App() {
return (
<Counter.Provider initialState={{ initNum: 1 }}>
<TestCounter />
</Counter.Provider>
)
}
useContainer#
TestCounter#
import { Counter } from "./Context"
import {TestChild} from './TestChild'
export const TestCounter = () => {
const { num, decrement } = Counter.useContainer();
return <>
<button onClick={decrement}>减法</button>
<TestChild />
</>
}
TestChild#
import { Counter } from "./Context"
export const TestChild = () => {
const { num, increment } = Counter.useContainer();
return <>
{num} <button onClick={increment}>加法</button>
</>
}
本文由 note.batype.com 导入。
相关文章
- unstate-next 的实现原理
需要实现包装方法和获取数据的 hooks
- 对象属性只读(递归)DeepReadonly
实现一个泛型 DeepReadonly<T ,它将对象的每个参数及其子对象递归地设为只读。
- 获取只读属性 GetReadonlyKeys
实现泛型 GetReadonlyKeys<T , GetReadonlyKeys<T 返回由对象 T 所有只读属性的键组成的联合类型。