diff --git a/src/React/Basic/Hooks.purs b/src/React/Basic/Hooks.purs index 64537d5..86dc92b 100644 --- a/src/React/Basic/Hooks.purs +++ b/src/React/Basic/Hooks.purs @@ -331,6 +331,28 @@ useReducer initialState (Reducer reducer) = foreign import data UseReducer :: Type -> Type -> Type -> Type +-- | Typically used to create a reference to a DOM element. Usage example: +-- | +-- | ```purs +-- | type NodeRef = Ref (Nullable Node) +-- | +-- | newNodeRef :: React.Hook (React.UseRef (Nullable Node)) NodeRef +-- | newNodeRef = React.useRef null +-- | +-- | myComponent :: Component {} +-- | myComponent = component "MyComponent" \_ -> React.do +-- | dialogRef :: NodeRef <- newNodeRef +-- | let myOnClose = resetDialog dialogRef +-- | pure $ +-- | R.dialog +-- | { ref: dialogRef +-- | , children: [ R.form { ref: dialogRef } ] +-- | , onClose: myOnClose +-- | } +-- | ``` +-- | +-- | Here, the reference is being connected with the `dialog` via `ref` field, and at +-- | the same time it's passed to `resetDialog` event handler. useRef :: forall a. a -> Hook (UseRef a) (Ref a) useRef initialValue = unsafeHook do @@ -575,4 +597,4 @@ foreign import useSyncExternalStore3_ :: forall a. EffectFn3 (EffectFn1 (Effect Unit) (Effect Unit)) -- subscribe (Effect a) -- getSnapshot (Effect a) -- getServerSnapshot - a \ No newline at end of file + a