Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
@solid-primitives/refs
Advanced tools
Library of primitives, components and directives for SolidJS that help managing references to JSX elements.
Collection of primitives, components and directives that help managing references to JSX elements, keeping track of mounted/unmounted elements.
mergeRefs
- Utility for chaining multiple ref
assignments with props.ref
forwarding.resolveElements
- Utility for resolving recursively nested JSX children to a single element or an array of elements.resolveFirst
- Utility for resolving recursively nested JSX children in search of the first element that matches a predicate.<Refs>
- Get up-to-date references of the multiple children elements.<Ref>
- Get up-to-date reference to a single child element.npm install @solid-primitives/refs
# or
pnpm add @solid-primitives/refs
# or
yarn add @solid-primitives/refs
mergeRefs
Utility for chaining multiple ref
assignments with props.ref
forwarding.
import { mergeRefs, Ref } from "@solid-primitives/refs";
interface ButtonProps {
ref?: Ref<HTMLButtonElement>;
}
function Button(props: ButtonProps) {
let ref: HTMLButtonElement | undefined;
onMount(() => {
// use the local ref
});
return <button ref={mergeRefs(props.ref, el => (ref = el))} />;
}
// in consumer's component:
let ref: HTMLButtonElement | undefined;
<Button ref={ref} />;
resolveElements
Utility for resolving recursively nested JSX children to a single element or an array of elements using a predicate.
resolveElements
's API is similar to Solid's children
helper. It accepts a function that returns JSX children and a predicate function that filters the elements.
function Button(props: ParentProps) {
const children = resolveElements(() => props.children);
// ^?: Accessor<Element | Element[] | null>
return (
// Similarly to `children` helper, a `toArray` method is available
<For each={children.toArray()}>
{child => (
<div>
{child.localName}: {child}
</div>
)}
</For>
);
}
The default predicate is el => el instanceof Element
. You can provide a custom predicate to resolveElements
to filter the elements.
const els = resolveElements(
() => props.children,
(el): el is HTMLDivElement => el instanceof HTMLDivElement,
);
els(); // => HTMLDivElement | HTMLDivElement[] | null
On the server side the custom predicate will be ignored, but can be overridden by passing it as a third argument.
The default predicate can be imported from @solid-primitives/refs
:
import { defaultElementPredicate } from "@solid-primitives/refs";
On the client it uses instanceof Element
check, on the server it checks for the object with t
property. (generated by compiling JSX)
resolveFirst
Utility for resolving recursively nested JSX children in search of the first element that matches a predicate.
resolveFirst
matches the API of resolveElements
but returns only the first element that matches the predicate.
function Button(props: ParentProps) {
const child = resolveFirst(() => props.children);
// ^?: Accessor<Element | null>
return (
<div>
{child()?.localName}: {child()}
</div>
);
}
resolveFirst
also accepts a custom predicate as a second argument. See Using a custom predicate
section for more details.
<Ref>
Get up-to-date reference to a single child element.
<Ref>
accepts only a ref
property for getting the current element or undefined
, and requires children
to be passed in.
import { Ref } from "@solid-primitives/refs";
const [ref, setRef] = createSignal<Element | undefined>();
<Ref ref={setRef}>{props.children}</Ref>;
<Refs>
Get up-to-date references of the multiple children elements.
<Refs>
accepts only a ref
property for getting the current array of elements, and requires children
to be passed in.
import { Refs } from "@solid-primitives/refs";
const [refs, setRefs] = createSignal<Element[]>([]);
<Refs ref={setRefs}>
<For each={my_list()}>{item => <div>{item}</div>}</For>
<Show when={show()}>
<div>Hello</div>
</Show>
</Refs>;
https://stackblitz.com/edit/solid-vite-unocss-bkbgap?file=index.tsx
(run npm start
in the terminal)
Ref
Type for the ref
prop
export type Ref<T> = T | ((el: T) => void) | undefined;
RefProps
Component properties with types for ref
prop
interface RefProps<T> {
ref?: Ref<T>;
}
See CHANGELOG.md
FAQs
Library of primitives, components and directives for SolidJS that help managing references to JSX elements.
The npm package @solid-primitives/refs receives a total of 37,870 weekly downloads. As such, @solid-primitives/refs popularity was classified as popular.
We found that @solid-primitives/refs demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.