use-synchronized-state 1.0.15 → 1.0.17
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/CHANGELOG.md +3 -0
- package/README.md +6 -6
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# A React hook that creates a synchronized state with a reactive value
|
|
1
|
+
# A React hook that creates a synchronized state with a reactive value (fixing the Cascading updates issue)
|
|
2
2
|
|
|
3
3
|
## Highlights
|
|
4
4
|
- Offers a hook called useSyncState
|
|
@@ -149,9 +149,10 @@ This is the cascading updates problem in all its glory, instead of having one re
|
|
|
149
149
|
|
|
150
150
|
What react docs tell us to do in this case can be found here
|
|
151
151
|
https://react.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes.
|
|
152
|
-
|
|
152
|
+
The above example was changed to match the docs. It still rerenders the ChildComponent twice, which still causes a smaller
|
|
153
153
|
performance penalty, is hard to reason about and works only for states defined in the same component
|
|
154
|
-
(if syncState was a prop, it wouldn't work).
|
|
154
|
+
(if syncState was a prop, it wouldn't work). Also, the parentState and syncState will be synchronized only starting with
|
|
155
|
+
the second render.
|
|
155
156
|
|
|
156
157
|
```typescript jsx
|
|
157
158
|
function ChildComponent({ parentState }: { parentState: number }) {
|
|
@@ -167,9 +168,8 @@ function ChildComponent({ parentState }: { parentState: number }) {
|
|
|
167
168
|
}
|
|
168
169
|
```
|
|
169
170
|
|
|
170
|
-
The 'use-synchronized-state' hook
|
|
171
|
-
|
|
172
|
-
the same value from the first render (after the setParentState) and there will be no additional render (only the needed one).
|
|
171
|
+
The 'use-synchronized-state' hook solves the synchronization problem in an easier and more consistent manner.
|
|
172
|
+
Also, the api is easy to use and it works for any reactive value.
|
|
173
173
|
|
|
174
174
|
|
|
175
175
|
```typescript jsx
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var react=require("react");function useSyncState(e){var t=react.useState(
|
|
1
|
+
var react=require("react");function useSyncState(e){var t=react.useState(e),a=t[0],t=t[1],r=react.useState(e);return a!==e&&(t(e),r[1](e)),r}exports.useSyncState=useSyncState;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
/**
|
|
3
3
|
* This hook creates a synchronized state while avoiding the cascading update issue.
|
|
4
4
|
* In our case, synchronized means that when there is a change in propsState,
|
|
5
5
|
* the returned state changes to the same value,
|
|
6
6
|
* but it can also change independently when the returned setState is called.
|
|
7
7
|
* @param propsState - a reactive value (e.g. state, props) with which our returned state will synchronize
|
|
8
|
-
*
|
|
8
|
+
* @return the exact same output as useState: [state, setState], where state is the synchronized state with the propsState
|
|
9
9
|
*/
|
|
10
|
-
export declare function useSyncState<T>(propsState: T): [T, Dispatch<SetStateAction<T>>];
|
|
10
|
+
export declare function useSyncState<T>(propsState: T): [T, import("react").Dispatch<import("react").SetStateAction<T>>];
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useState
|
|
1
|
+
import{useState}from"react";function useSyncState(t){var e=useState(t),a=e[0],e=e[1],r=useState(t);return a!==t&&(e(t),r[1](t)),r}export{useSyncState};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "use-synchronized-state",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "A React hook that creates a synchronized state with a reactive value
|
|
3
|
+
"version": "1.0.17",
|
|
4
|
+
"description": "A React hook that creates a synchronized state with a reactive value (fixing the Cascading updates issue)",
|
|
5
5
|
"homepage": "https://github.com/rhorge/use-synchronized-state#readme",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/rhorge/use-synchronized-state/issues"
|