Solid/Router
important
Ensure your dependencies include @solidjs/router.
Ensure you open the Partas.Solid.Router namespace.
See the Solid-js docs
Route
type Route() = interface HtmlElementval path: string// overload:val paths: string arrayval component': TagValueval matchFilters: objval preload: RoutePreloadFuncRoutePreloadFunc
type RoutePreloadFunc = RoutePreloadFuncArgs -> unitRoutePreloadFuncArgs
type RoutePreloadFuncArgs = interfacemember ``params``: objmember location: Locationmember intent: IntentIntent
type IntentStringEnum with values:
| Initial| Native| Navigate| PreloadLocation
type Location = inherit Pathmember query: objmember state: obj optionmember key: stringPath
type Path = interfacemember pathname: stringmember search: stringmember hash: stringRouter
type Router() = interface HtmlElementval root: TagValueval base': stringval actionBase: stringval preload: boolval explicitLinks: boolval url: stringval children: Routeval children: RootConfig[]See Route and also see RootConfig
MemoryHistory
type MemoryHistorymember get(): stringmember set(value: string, ?scroll: bool, ?replace: bool): unitmember back(): _member forward(): _member go(int): unitmember listen(string -> unit): Accessor<unit>MemoryRouter
type MemoryRouter() = inherit Router()val history: MemoryHistoryRootConfig
[<Pojo>]type RootConfig ( path: string, ``component``: HtmlElement )HashRouter
type HashRouter = RouterPreloadData
[<Pojo>]type PreloadData (preloadData: bool)A
type A() = interface RegularNodeval href: stringval noScroll: boolval replace: boolval state: objval activeClass: stringval inactiveClass: stringval end': boolNavigate
type Navigate() = interface RegularNodeval href: stringval state: objSolidAction
type SolidAction<'Input, 'Result>abstract url: stringabstract with': 'Input -> stringSubmission
type Submission<'Input, 'Result>abstract input: 'Inputabstract result: 'Result optionabstract error: objabstract pending: boolabstract url: stringabstract clear: (unit -> unit)abstract retry: (unit -> unit)Extensions
[<Extension>]static member pending(Submission<'Input, unit>[]): boolAsyncAccessor
type AsyncAccessor<'T>abstract Invoke: unit -> 'Tabstract latest: 'TQuery
type Query<'Input, 'Output>abstract Invoke: 'Input -> 'Outputabstract key: stringabstract keyFor: 'Input -> stringaction
important
Only works with POST requests
let action<'Input, 'Output> ( handler: 'Input -> Promise<'Output>, ?name: string, ?onComplete: Submission<'Input, Output> -> unit ): SolidAction<'Input, 'Output>useAction
warning
You can avoid the use of formData using this, but it requires client-side javascript and is not progressively enhanceable like forms are.
let useAction<'Input, 'Result>( action: SolidAction<'Input, 'Result> ): 'Input -> 'ResultuseSubmission
let useSubmission<'Input>( action: SolidAction<'Input, unit>, ?filter: 'Input -> bool ): Submission<'Input, unit>useSubmissions
let useSubmissions<'Input>( action: SolidAction<'Input, unit>, filter: 'Input -> bool ): Submission<'Input, unit> arraycreateAsync
let createAsync<'T> ( fn: 'T option -> Promise<'T>, ?name: string, ?initialValue: 'T, ?deferStream: bool, ?onHydrated: unit -> unit, ?ssrLoadFrom: string, ?storage: unit -> Signal<'T> ): Accessor<'T>With utility
let createAsyncWithLatest<'T> ( // ... ): AsyncAccessor<'T>createAsyncStore
let createAsyncStore<'T>( fn: 'T option -> Promise<'T>, ?name: string, ?initialValue: 'T, ?deferStream: bool, ?onHydrated: unit -> unit, ?ssrLoadFrom: string, ?storage: unit -> Signal<'T> ): Accessor<'T>With utility
let createAsyncStoreWithLatest<'T>( // ... ): AsyncAccessor<'T>query
let query<'Input, 'Output>( fn: FSharpFunc<'Input, 'Output>, ?name: string ): FSharpFunc<'Input, 'Output>With utility
let query'<'Input, 'Output>( fn: FSharpFunc<'Input, 'Output>, ?name: string ): Query<'Input, 'Output>revalidate
let revalidate( key: string, ?force: bool ): unitcreateMemoryHistory
let createMemoryHistory(): MemoryHistoryuseNavigate
let useNavigate(): NavigatorNavigator
type Navigator = interfacemember Invoke: (``to``: string) * (?options: NavigateOptions) -> unitSee the InvokeOptions signature below to see the construction parameters for the
NavigateOptions Pojo.
member InvokeOptions: ``to``: string * ?resolve: bool * ?replace: bool * ?scroll: bool * ?state: obj -> unitwarning
This will replace Invoke in an upcoming update, as it is a superior user experience
to consume.
member Invoke: delta: float -> unituseLocation
let useLocation(): LocationuseIsRouting
let useIsRouting(): unit -> booluseMatch
let useMatch( fn: unit -> string, ?matchFilters: obj ): unit -> booluseParams
let useParams(): objuseBeforeLeave
let useBeforeLeave(listener: BeforeLeaveEventArgs -> unit): unitBeforeLeaveEventArgs
type BeforeLeaveEventArgs = interfacemember from: Locationmember ``to``: U2<string, float>member options: NavigateOptions optionmember defaultPrevented: boolmember preventDefault: unit -> unitmember retry: ?force: bool -> unituseCurrentMatches
let useCurrentMatches(): unit -> RouteMatch[]RouteMatch
type RouteMatch = inherit PathMatchmember route: RouteDescriptionPathMatch
type PathMatch = interfacemember ``params``: objmember path: stringRouteDescription
type RouteDescription = interfacemember key: objmember originalPath: stringmember pattern: stringmember preload: RoutePreloadFunc optionmember matcher: string -> PathMatch optionmember matchFilters: obj optionmember info: obj optionusePreloadRoute
let usePreloadRoute(): (string -> PreloadData) -> unituseSearchParams
let useSearchParams(): Signal<obj>Last updated: 9/11/25, 8:36 AM