UI Kit Hooks
Hooks are a powerful feature in React that allow you to use state and other React features without having to write a class. They simplify your component logic and make your code easier to understand and maintain. Our UI Kit currently utilizes one custom hook to provide a convenient function to your apps.
useSetAppHeight
The useSetAppHeight
hook dynamically adjusts the height of the sidebar app based on its content. This hook is especially useful when the content changes dynamically, causing the height of the app’s container to also change.
Here’s how to use useSetAppHeight
:
import { useSetAppHeight } from "@helpscout/ui-kit";
function App() {
const appRef = useSetAppHeight();
return (
<div className="App" ref={appRef}>
Hey there 👋
</div>
);
}
export default App;
In the example above, the useSetAppHeight
hook is invoked without any arguments, so it will use default values for its parameters. You can pass an object to useSetAppHeight
to customize its behavior.
Parameters:
Parameter | Type | Description | Default |
---|---|---|---|
defaultHeight |
number | The default height (in pixels) to be used when the appRef does not reference a valid HTML element. |
300 |
effectDependencies |
unknown[] | An array of dependencies that will trigger the hook to run again. Any changes to these values will cause the effect to rerun. If your component’s height depends on some state or prop, include that state or prop in this array. | [] |
Returns:
Return | Type | Description |
---|---|---|
appRef |
React.RefObject | A mutable ref object to be attached to a DOM element after render. Its .current property is initialized to null and updated to reference the DOM element. |
Usage:
const appRef = useSetAppHeight({
defaultHeight: 500,
effectDependencies: [someState, someProp],
});
return (
<div className="App" ref={appRef}>
My awesome app ✨
</div>
);
In this case, the appRef
is given to a div
’s ref
prop. When the div
is rendered, appRef.current
will point to the div
, allowing the hook to adjust its height based on its content.