@fane_the_divine/react-signal 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -13
- package/dist/react-signal.d.ts +10 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
# react-signal
|
|
2
2
|
|
|
3
|
-
在react里使用signal
|
|
3
|
+
在react里使用signal
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
API参考solid,使用方法见[demo](src/index.tsx).
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
[npm包](https://www.npmjs.com/package/@fane_the_divine/react-signal)
|
|
8
8
|
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
num: number
|
|
12
|
-
}
|
|
13
|
-
const Comp = defineComponent<CompProps>((props) => {
|
|
14
|
-
return () => <span>{props().num}</span>
|
|
15
|
-
})
|
|
9
|
+
```bash
|
|
10
|
+
npm i @fane_the_divine/react-signal
|
|
16
11
|
```
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
使用时可能出现hmr失效的问题,需要重建组件或刷新网页
|
|
14
|
+
|
|
15
|
+
## API介绍
|
|
20
16
|
|
|
21
17
|
### createSignal
|
|
22
18
|
|
|
@@ -34,6 +30,21 @@ count.value
|
|
|
34
30
|
|
|
35
31
|
可以在任何位置使用createSignal
|
|
36
32
|
|
|
33
|
+
### defineComponent
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
type CompProps = {
|
|
37
|
+
num: () => number
|
|
38
|
+
}
|
|
39
|
+
const Comp = defineComponent<CompProps>((props) => {
|
|
40
|
+
// props对象是signal 参数也是signal
|
|
41
|
+
return () => <span>{props().num()}</span>
|
|
42
|
+
})
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
defineComponent接受一个setup函数 这个函数在组件整个生命周期内只执行一次
|
|
46
|
+
setup应当返回一个render函数 这个函数会执行多次
|
|
47
|
+
|
|
37
48
|
### createMemo
|
|
38
49
|
|
|
39
50
|
创建一个派生signal
|
|
@@ -42,7 +53,7 @@ count.value
|
|
|
42
53
|
// 参数为上一次的memo值
|
|
43
54
|
const double = createMemo((prev) => {
|
|
44
55
|
return count() * 2
|
|
45
|
-
//
|
|
56
|
+
// 第二个参数是自定义的比较函数
|
|
46
57
|
}, Object.is)
|
|
47
58
|
|
|
48
59
|
// 访问其值
|
package/dist/react-signal.d.ts
CHANGED
|
@@ -11,6 +11,9 @@ import { RefObject } from 'react';
|
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts
|
|
13
13
|
* defineComponent(() => {
|
|
14
|
+
*
|
|
15
|
+
* // ...
|
|
16
|
+
*
|
|
14
17
|
* createEffect(
|
|
15
18
|
* // 允许 effect 函数返回一个值,并会输入到下一次 effect 函数
|
|
16
19
|
* // 可以从参数判断是否第一次调用
|
|
@@ -31,7 +34,8 @@ import { RefObject } from 'react';
|
|
|
31
34
|
* },
|
|
32
35
|
* )
|
|
33
36
|
*
|
|
34
|
-
*
|
|
37
|
+
* // ...
|
|
38
|
+
*
|
|
35
39
|
* })
|
|
36
40
|
* ```
|
|
37
41
|
*/
|
|
@@ -76,21 +80,19 @@ export declare function createSignal<T>(defaultValue: T): Signal<T>;
|
|
|
76
80
|
* setup 在组件整个生命周期内只执行一次(不包括热重载),应返回一个 render 函数;render 会执行多次。
|
|
77
81
|
* 入参 `props` 为 {@link SignalGetter},在 setup 或 render 中用 `props()` 读取并追踪父组件传入的 props。
|
|
78
82
|
*
|
|
79
|
-
* @typeParam T - 组件 props 类型。
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
83
|
* @example
|
|
83
84
|
* ```tsx
|
|
84
85
|
* type CompProps = {
|
|
85
|
-
*
|
|
86
|
+
* // 组件参数可以是signal
|
|
87
|
+
* num: () => number
|
|
86
88
|
* }
|
|
87
89
|
* const Comp = defineComponent<CompProps>((props) => {
|
|
88
|
-
* // props
|
|
90
|
+
* // props对象是signal
|
|
89
91
|
* // 组件销毁后执行
|
|
90
92
|
* onCleanup(()=> console.log('comp unmounted'))
|
|
91
93
|
* // render中用到的signal被自动收集 变化后更新组件
|
|
92
|
-
* //
|
|
93
|
-
* return () => <span>{props().num}</span>
|
|
94
|
+
* // 如果通过props().num.value访问值 则不会被收集
|
|
95
|
+
* return () => <span>{props().num()}</span>
|
|
94
96
|
* })
|
|
95
97
|
* ```
|
|
96
98
|
*/
|