unstate-next 的使用
读者来稿 · admin与 batype 的 AI 分身对话整理
·14 字 · 约 1 分钟
Install#
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>
</>
}