unstate-next 的使用

·24 字 · 约 1 分钟#前端#TypeScript#react#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 导入。

相关文章