首页 > 其他分享 >unstated-next 使用

unstated-next 使用

时间:2022-08-30 16:00:36浏览次数:56  
标签:count function const unstated next increment 使用 return decrement

//count-context.tsx
import { useState } from 'react'
import { createContainer, useContainer } from 'unstated-next'

interface CounterProps {
  count: number
  increment: () => void
  decrement: () => void
}

function Counter(initialState = 0): CounterProps {
  const [count, setCount] = useState(initialState)
  const decrement = () => setCount(count - 1)
  const increment = () => setCount(count + 1)
  return { count, decrement, increment }
}

export const CounterContainer = createContainer(Counter)

export function useCounter() {
  return useContainer(CounterContainer)
}

import { useCounter, CounterContainer } from './count-context'

function Counter1() {
  const { count, decrement, increment } = useCounter()
  return (
    <div>
      <button onClick={decrement}>-</button>
      <span>1.you click {count} times</span>
      <button onClick={increment}>+</button>
    </div>
  )
}

function Counter2() {
  const { count, decrement, increment } = useCounter()
  return (
    <div>
      <button onClick={decrement}>-</button>
      <span>2.you click {count} times</span>
      <button onClick={increment}>+</button>
    </div>
  )
}

export default function Index() {
  return (
    <CounterContainer.Provider initialState={10}>
      <Counter1 />
      <Counter2 />
      <div>
        <CounterContainer.Provider>
          <Counter1 />
          <Counter2 />
        </CounterContainer.Provider>
      </div>
    </CounterContainer.Provider>
  )
}

标签:count,function,const,unstated,next,increment,使用,return,decrement
From: https://www.cnblogs.com/samsara-yx/p/16639635.html

相关文章

  • jenkins Webhook Trigger 使用
    Jenkins插件中心安装插件GenericWebhookTrigger设置APITokenJenkins->系统管理->管理用户->设置->APIToken->添加Token配置GitlabwebHook添加......
  • Mvc中Ajax.pager分页使用方法
    最基础的使用第三方控件ajax.pager使用主显示思路是将主显示页分为两个分布视图,一个是显示页面信息,一个是显示第三方控件分页效果,需要引用ajax,和mvcpager运行代码......
  • AndroidStudio使用命令行出包
    AndroidStudio使用命令行出包使用命令行出包的两种方式:方案1、Apacheant命令行出包(弃用)。方案2、AndroidGradle命令行出包。先说方案1,此方案为古老传说流传下来的出......
  • 【OpenFace】使用命令行单个/批量处理图像/视频
    在OpenFace的可执行文件夹Release下运行cmd以识别单个视频为例:命令行参数参考:https://blog.csdn.net/bj233/article/details/113737268?utm_medium=distribute.pc_rel......
  • 如何使用CSS伪类选择器
    总览CSS选择器允许你通过类型、属性、位于HTML文档中的位置来选择元素。本教程阐述了三个新选项:is()、:where()和:has()。选择器通常在样式表中使用。下面的示例会找......
  • webpack5 中使用iframe 复用导航栏时js代码多次编译问题
    作为webpack萌新,在使用webpack时,偶然发现热更新了多次,最开始以为是配置问题,网上找了很久都没有答案,无意看见一个一个帖子说多引用了一遍js文件,于是我我回去找代码看是不是......
  • Ubuntu 命令使用方法
    apt-get用作于deb包yum作用于tar包(也可以运作于rpm包)wget是下载工具后面可以直接跟地址如果当前linux中没有wget,那么我们可以考虑使用sudoapt-getinstallwget来安......
  • .NET 文件系统(一)-- EfCore的使用,反射生成DbSet与Autofac的使用
    项目基础设计1.创建FileDownLoadSystem空解决方案的项目2.创建FileDownLoadSystem.APIAPI项目3.创建FileDownLoadSystem.Core类库4.创建FileDownLoadSystem.Entity......
  • 使用java处理字符串公式运算的方法
    在改进一个关于合同的项目时,有个需求,就是由于合同中非数据项的计算公式会根据年份而进行变更,而之前是将公式硬编码到系统中的,只要时间一变,系统就没法使用了,因此要求合同中......
  • Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用
    一、ThreadPoolTaskExecutor本文采用Executors的工厂方法进行配置。1、将线程池用到的参数定义到配置文件中在项目的resources目录下创建executor.properties文件......