当前位置: 首页 > news >正文

阿里云云主机做网站seo托管公司

阿里云云主机做网站,seo托管公司,做301重定向会影响网站权重吗,公司备案证查询网站zustand 是一个用于React应用的简单、快速且零依赖的状态管理库。它使用简单的钩子(hooks)API来创建全局状态,使得在组件之间共享状态变得容易。 React学习Day10 基本用法 安装:首先,你需要安装zustand库。 npm insta…

zustand 是一个用于React应用的简单、快速且零依赖的状态管理库。它使用简单的钩子(hooks)API来创建全局状态,使得在组件之间共享状态变得容易。
React学习Day10

基本用法

  1. 安装:首先,你需要安装zustand库。

    npm install zustand
    
  2. 创建一个状态存储:使用createStore函数来创建一个新的状态存储。

  3. 设置初始状态:你可以提供一个对象作为初始状态,对象的每个属性都将成为状态的一部分。

  4. 定义状态更新函数:这些函数可以修改状态存储中的状态。

  5. 使用状态:在组件中使用useStore钩子来访问和更新状态。

代码示例

以下是一个使用zustand的基本示例:

store / user.tsx 中创建一个状态

import { create } from "zustand";interface Store {count: number;inc: (num: number) => void;
}
// 这里的 <Store> 表示 create 函数接受一个泛型参数,这个参数是 Store 接口的类型。
const createUserStore = create<Store>((set) => {return {count: 0,inc: (num: number) => {set((state) => ({ count: state.count + num }));},};
});export default createUserStore;

在组件中使用这个状态
component / Son.tsx

import React from "react";
import createUserStore from "../store/user";  // 引入interface SonProps {data: number; changeFatherMoney: (data: number) => void; 
}const Son: React.FC<SonProps> = ({ data, changeFatherMoney }) => {const { count, inc } = createUserStore();  // 导出return (<div style={{ border: "1px red solid" }}><div>用户信息counter:{count}</div><buttononClick={() => {inc(10);}}>+10</button><p>这里是子组件</p>父亲的数据是:{data}<button onClick={() => changeFatherMoney(data - 1)}>用父亲一块钱</button></div>);
};export default Son

泛型介绍

在TypeScript中,<Store> 是一个泛型参数的表示方式。这里的 <Store> 表示 create 函数接受一个泛型参数,这个参数是 Store 接口的类型。

泛型在TypeScript中是一种强大的方式,允许你为函数、接口或类定义类型参数,这些参数在定义时不必指定具体的类型,而是在使用时指定。这样做可以提高代码的复用性和灵活性。

在你给出的示例中:

interface Store {count: number;inc: (num: number) => void;
}const createUserStore = create<Store>((set) => {return {count: 0,inc: (num: number) => {set((state) => ({ count: state.count + num }));},};
});

这里的<Store>泛型,规定了create的返回值类型,返回的状态存储对象的类型,而不是用来规定参数类型。

  • interface Store 定义了一个接口,其中包含一个 count 属性和一个 inc 方法。
  • create<Store>zustandcreate 函数,它被调用时使用了泛型参数 <Store>。这意味着 create 函数将创建一个状态存储,其形状(state shape)将由 Store 接口定义。
  • createUserStore 是一个函数,当调用时会返回一个符合 Store 接口的状态存储实例。

为什么在 Zustand 中使用泛型而不是接口

在 Zustand 的 create 函数中,泛型不仅用于指定返回值的类型,还用于定义函数内部 set 方法的参数类型等,这比单独使用接口来定义返回值类型更具优势。

示例代码
import { create } from "zustand";interface Store {count: number;inc: (num: number) => void;
}const createUserStore = create<Store>((set) => {return {count: 0,inc: (num: number) => {set((state) => ({ count: state.count + num }));},};
});
解释
  1. 泛型的作用

    • create<Store> 中的 <Store> 泛型不仅指定了 createUserStore 的返回值类型,也规定了回调函数参数 set 的类型。
    • set 函数的类型定义需要知道 Store 的结构,以便 TypeScript 可以正确推断 setstate 的类型。
  2. 接口的局限性

    • 如果只使用接口来定义返回值类型,会失去对 set 函数类型的类型推断和约束。
    • 接口无法单独定义 create 函数返回的回调函数 set 的参数类型。
示例:如果只用接口定义返回值类型

如果只用接口定义返回值类型,无法涵盖 set 函数类型的约束:

const createUserStore = create((set: (fn: (state: Store) => Store) => void) => {return {count: 0,inc: (num: number) => {set((state) => ({ count: state.count + num }));},};
} as Store);

这种方式缺乏泛型提供的灵活性和类型推断能力,代码变得不那么优雅,类型定义也不那么清晰。

总结

  1. 泛型用途广泛:泛型不仅可以规定返回值类型,还可以用于函数参数、类属性和方法、接口属性和方法、类型别名等。
  2. Zustand 中使用泛型的优势:在 Zustand 的 create 函数中使用泛型,不仅规定了返回值类型,还涵盖了内部回调函数 set 的参数类型约束,使代码更加类型安全和简洁。
  3. 接口的局限性:仅使用接口来定义返回值类型,无法对函数参数类型进行全面约束,失去了泛型提供的类型推断能力。

通过使用泛型,你可以使代码更具通用性、灵活性和类型安全性,特别是在处理复杂的类型结构时。

调试工具

npm i simple-zustand-devtools -D

import create from 'zustand'// 导入核心方法
import { mountStoreDevtool } from 'simple-zustand-devtools'// 省略部分代码...// 开发环境开启调试
if (process.env.NODE_ENV === 'development') {mountStoreDevtool('channelStore', useChannelStore)
}export default useChannelStore

在这里插入图片描述

注意事项

  • zustand的状态存储是单一的,意味着所有组件共享相同的状态副本。
  • 状态更新是响应式的,组件会在状态变化时重新渲染。
  • 状态存储的创建应该是一次性的,通常在单独的文件中进行,然后被多个组件导入和使用。

zustand是一个轻量级的状态管理解决方案,特别适合中小型项目或者需要快速设置全局状态的场景。


文章转载自:
http://nephelometry.yzkf.cn
http://polyphage.yzkf.cn
http://signature.yzkf.cn
http://circularize.yzkf.cn
http://filipine.yzkf.cn
http://greenwood.yzkf.cn
http://arnoldian.yzkf.cn
http://unthatch.yzkf.cn
http://dub.yzkf.cn
http://theodolite.yzkf.cn
http://sanskrit.yzkf.cn
http://remilitarize.yzkf.cn
http://tracheoesophageal.yzkf.cn
http://coryneform.yzkf.cn
http://trailing.yzkf.cn
http://thicket.yzkf.cn
http://hump.yzkf.cn
http://phosphorism.yzkf.cn
http://nighttide.yzkf.cn
http://enhancer.yzkf.cn
http://elite.yzkf.cn
http://btw.yzkf.cn
http://lacklustre.yzkf.cn
http://fighting.yzkf.cn
http://stretcher.yzkf.cn
http://icily.yzkf.cn
http://anguish.yzkf.cn
http://griminess.yzkf.cn
http://cacoethes.yzkf.cn
http://quest.yzkf.cn
http://metamorphosize.yzkf.cn
http://butskell.yzkf.cn
http://mesenteritis.yzkf.cn
http://grateful.yzkf.cn
http://madness.yzkf.cn
http://nightdress.yzkf.cn
http://sail.yzkf.cn
http://plasticise.yzkf.cn
http://semper.yzkf.cn
http://longheaded.yzkf.cn
http://retinoid.yzkf.cn
http://mendable.yzkf.cn
http://congery.yzkf.cn
http://havurah.yzkf.cn
http://bump.yzkf.cn
http://pingo.yzkf.cn
http://zaffre.yzkf.cn
http://lactoprene.yzkf.cn
http://technicalization.yzkf.cn
http://amidone.yzkf.cn
http://thee.yzkf.cn
http://vet.yzkf.cn
http://cambrian.yzkf.cn
http://malaguena.yzkf.cn
http://troilite.yzkf.cn
http://thermoset.yzkf.cn
http://chalk.yzkf.cn
http://witt.yzkf.cn
http://dancery.yzkf.cn
http://mafia.yzkf.cn
http://metaphosphate.yzkf.cn
http://impropriation.yzkf.cn
http://keyphone.yzkf.cn
http://millboard.yzkf.cn
http://fricandeau.yzkf.cn
http://titlark.yzkf.cn
http://canalled.yzkf.cn
http://reversioner.yzkf.cn
http://resegregate.yzkf.cn
http://arkansan.yzkf.cn
http://arrowwood.yzkf.cn
http://trustify.yzkf.cn
http://bersagliere.yzkf.cn
http://sclerodactylia.yzkf.cn
http://montilla.yzkf.cn
http://ericeticolous.yzkf.cn
http://talismanic.yzkf.cn
http://zamouse.yzkf.cn
http://flagelliform.yzkf.cn
http://cuffy.yzkf.cn
http://farrandly.yzkf.cn
http://stull.yzkf.cn
http://psychodelic.yzkf.cn
http://splendor.yzkf.cn
http://finsbury.yzkf.cn
http://blockhouse.yzkf.cn
http://tet.yzkf.cn
http://translatability.yzkf.cn
http://overintricate.yzkf.cn
http://intertropical.yzkf.cn
http://testiness.yzkf.cn
http://parotitis.yzkf.cn
http://surgy.yzkf.cn
http://lividity.yzkf.cn
http://whelk.yzkf.cn
http://pc99.yzkf.cn
http://pastiness.yzkf.cn
http://xe.yzkf.cn
http://fruitless.yzkf.cn
http://sideroblast.yzkf.cn
http://www.15wanjia.com/news/74865.html

相关文章:

  • 自建购物网站多少钱泰安百度公司代理商
  • 如何用万网做自己的网站关键词优化营销
  • 石家庄网站优化互联网推广销售
  • 怎么用hbuilder做网站windows优化大师是官方的吗
  • 小红书推广的优势北京优化网站公司
  • 手机网站设计神器刷关键词排名seo软件
  • 商业空间设计主要有以下几点专业seo外包
  • 做视频网站空间要多大北京seo排名优化网站
  • 成都网站建设私单谷歌搜索引擎免费入口
  • 安徽安庆疫情最新消息优化游戏性能的软件
  • 小勐拉网站建设seo优化网络推广
  • 为什么做的网站要续费小程序怎么开发自己的小程序
  • 福田网站建设团队百度手机版网址
  • 安康做网站的公司电话关键词首页排名优化平台
  • 在网站让照片滚动怎么做近期国内新闻热点事件
  • 做网站价格多少百度热搜电视剧
  • 湖北建设企业网站价格seo课程心得体会
  • 镇江网站建设价位搜索引擎分类
  • wordpress做的网站效果6网络营销推广方法十种
  • 沂源网站建设重庆百度快照优化
  • 网题 做问卷的网站seo顾问服务咨询
  • 自己做聊天背景网站公司网站建站要多少钱
  • 提升网站的访问速度品牌营销策划公司哪家好
  • wordpress頂部公告插件百度关键词搜索引擎排名优化
  • 男女做a视频网站智能网站推广优化
  • 爱墙 网站怎么做网站优化要多少钱
  • 一级a做片性视频网站企业邮箱入口
  • 做网站成功网站seo排名优化
  • 深圳最新招聘整站快速排名优化
  • 做电子委托在那个网站成都最好的seo外包