Skip to content

Commit 9982f7c

Browse files
authored
Merge pull request #25 from pl12133/useLinkState
Add useLinkState hook.
2 parents 0aae31e + 05b498a commit 9982f7c

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

hook/index.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import delve from 'dlv';
2+
import { useState, useCallback } from 'preact/hooks';
3+
4+
export default function useLinkState(initialState, eventPath) {
5+
const [state, setState] = useState(initialState);
6+
7+
const linkState = useCallback(
8+
e => {
9+
const t = (e && e.target) || this,
10+
v =
11+
typeof eventPath === 'string'
12+
? delve(e, eventPath)
13+
: t.nodeName
14+
? t.type.match(/^che|rad/)
15+
? t.checked
16+
: t.value
17+
: e;
18+
19+
setState(v);
20+
},
21+
[setState, eventPath]
22+
);
23+
24+
return [state, linkState, setState];
25+
}

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,8 @@
8888
"sinon-chai": "^2.8.0",
8989
"strip-json-comments-cli": "^1.0.1",
9090
"uglify-js": "^2.6.2"
91+
},
92+
"peerDependencies": {
93+
"preact": ">=10"
9194
}
9295
}

0 commit comments

Comments
 (0)