UNPKG

react-hooks-easy

Version:
159 lines (134 loc) 6.7 kB
# react-hooks-easy > 封装了每种变量类型统一的增删改查API,为hooks 增加订阅模式,方便组件通信 ### 概述 一个管理 hooks 的工具,String、Array、Boolean、Number、Object hooks变量的增删改查封装 ### 安装 ``` npm i react-hooks-easy ``` 此工具共暴露5个API,对应5种数据类型 1. useBoolean 2. useNumber 3. useArray (alias: useList) 4. useObject (alias: useMap) 5. useString ### Example ``` import {useBoolean} from 'react-hooks-easy' export default function Initial(props) { // 声明一个命名空间为 test 的初始值为 false // testBoolean 为自定义变量,可随意命名 const testBoolean = useBoolean('test', false); return ( <div> <div>{testBoolean.value ? 'true' : 'false'}</div> <button onClick={() => testBoolean.toggle()}>Toggle</button> </div> ) } // 只要命名空间相同,变量就是共享的,这也是我做这个工具的初衷 // 组件之间不需要有什么关系,这是变量共享 // 所以可以在另一个组件里获取其他组件的 hooks 改动 export default (props) => { // 声明命名空间为 test,第二个参数无,即不用初始化(其他组件初始过了) const testBoolean = useBoolean('test'); return ( <div> <div>{testBoolean.value ? 'true' : 'false'}</div> <button onClick={() => testBoolean.toggle()}>这里也可以改变值</button> </div> ) } ``` ### 增删改查使用 async/await 或 promise 示例 > 反正你只要能返回就对了,内部已经把 promise 转为 await,保证异步promise也能接收返回值 ``` const testNumber = useNumber('test'); <button onClick={() => testNumber.set(async () => { let res = await fetch('https://randomuser.me/api/'); let user = await res.json(); return user.info.version; })}>用async/await改变值</button> // 示例2 axios <button onClick={() => testNumber.set(async () => await axios('https://randomuser.me/api/'))}>用async/await改变值</button> // 示例3 使用 promise <button onClick={() => testNumber.set(() => fetch('https://randomuser.me/api/').then(response => response.json()).then((data) => { return data.info.page; }) )}>Promise</button> ``` ### 默认变量更新是异步的,如果想及时获取到实时数据,可使用返回值的方式 ``` // 返回值是 promise 可以使用 await async function sync(){ let res = await testNumber.inc(10); // 打印出来有很多私有属性,不用管,res 已经是最新的值了,直接照常用就行了 console.log(res); } // 或者使用 then 的方式 testNumber.inc(10).then(val => console.log(res)) ``` ### 可用API #### 1、useBoolean | 属性 | 说明 | 类型 | 属性参数 | 默认值 |----------|:-------------| :------| :--- | :---| | value | 值 | boolean | | [自填初始值] | | set | 设置值 | func(val) | | | | reset | 还原开始的初始值 | func() | 无参数 | | | reInitial | 重新赋值(通用API,所有接口都实现了此方法,用于Array/Object批量赋值) | func(val) | val:boolean | | | toggle | 切换 true/false | func() | 无参数 | | #### 2、useNumber | 属性 | 说明 | 类型 | 属性参数 | 默认值 |----------|:-------------| :------| :--- | :---| | value | 值 | boolean | | [自填初始值] | | set | 设置值 | func(val) | | | | reset | 还原开始的初始值 | func() | 无参数 | | | reInitial | 重新赋值(通用API,所有接口都实现了此方法,用于Array/Object批量赋值) | func(val) | val:boolean | | | increment | 自增 | func(count) | count: 自增数 | 1 | | inc | increment 别名 | func(count) | count: 自增数 | 1 | | decrement | 自减 | func(count) | count: 自减数 | 1 | | dec | decrement 别名 | func(count) | count: 自减数 | 1 | #### 3、useArray | 属性 | 说明 | 类型 | 属性参数 | 默认值 |----------|:-------------| :------| :--- | :---| | value | 值 | boolean | | [自填初始值] | | add | 在数组指定位置添加一个值 | func(index, val = undefined) | 如果没有第二个参数,则变身 push 方法 | | | set | add 别名 | func(index, val) | | | | reset | 还原开始的初始值 | func() | 无参数 | | | reInitial | 重新赋值(通用API,所有接口都实现了此方法,用于Array/Object批量赋值) | func(val) | val:boolean | | | push | 追加 | func(val) | | | | append | push 别名 | func(val) | | | | unshift | 在数组头追加 | func(val) | | | | prepend | unshift 别名 | func(val) | | | | del | 删除指定位置元素 | func(index) | index: 索引位置 | | | splice | 同js数组方法 | func(index, length, ...values) | index: 开始位置,length:删除长度,...values: 追加的元素(一/多个) | | #### 4、useObject | 属性 | 说明 | 类型 | 属性参数 | 默认值 |----------|:-------------| :------| :--- | :---| | value | 值 | boolean | | [自填初始值] | | add | 在数组指定位置添加一个值 | func(index, val) | | | | set | add 别名 | func(index, val) | | | | reset | 还原开始的初始值 | func() | 无参数 | | | reInitial | 重新赋值(通用API,所有接口都实现了此方法,用于Array/Object批量赋值) | func(val) | val:boolean | | | del | 删除指定位置元素 | func(index) | index: 索引位置 | | | splice | 扩展自js数组方法,可在对象任意位置添加元素 | func(index, length, values) | index: 开始位置,length:删除长度,values: 对象 | | ``` // 对象的 splice 不同于数组的 splice,这里固定三个参数 // splice 示例 splice(0,1, {test: 'test'}); // 多个对象元素,在第三个参数中放在一起 splice(0,1, {test: 'test', test2: 'test2'}); ``` #### 5、useString | 属性 | 说明 | 类型 | 属性参数 | 默认值 |----------|:-------------| :------| :--- | :---| | value | 值 | boolean | | [自填初始值] | | set | 设置值 | func(val) | | | | reset | 还原开始的初始值 | func() | 无参数 | | | reInitial | 重新赋值(通用API,所有接口都实现了此方法,用于Array/Object批量赋值) | func(val) | val:boolean | | | append | 追加字符串 | func(val) | | | | prepend | 在开头追加字符串 | func(val) | | | | replace | 搜索并替换字符串 | func(search, ?replace) | replace默认空字符串 | | | substring | 字符串截取,同 js 方法 | func(start, ?end) | | | | substr | 字符串截取,同 js 方法(类PHP) | func(start, ?length) | | |