getCurrentComponent
获取当前组件对象,但是请勿随意更改或者删除其中的值,可能会发生预期之外的错误。
返回值
返回组件对象。
类型声明
declare function getCurrentComponent(): Component
示例
import { h, getCurrentComponent } from 'gyron'
const App = h(() => {
const component = getCurrentComponent()
return () => h('div', 'hello world')
})
defineProps
获取当前组件的 props,是为了解决 setup 函数中 props 不是最新的问题。
返回值
组件的 props,并且包含 children 对象。
类型声明
declare function defineProps<T extends Data>(): T & ComponentDefaultProps
示例
import { h, defineProps } from 'gyron'
const App = h(() => {
const props = defineProps()
return () => h('div', props.message)
})
forceUpdate
在使用某些非响应式数据时想要更新,就可以使用此函数强制更新当前组件。 这种方式不是推荐的,你可以使用 useValue 或者 useReactive 函数创建响应式数据。
类型声明
declare function forceUpdate(component: Component): void
示例
import { h, forceUpdate } from 'gyron'
const App = h(({ component }) => {
let message = 0
setTimeout(() => {
message = 1
forceUpdate(component)
})
return () => h('div', message)
})
createRef
创建一个 ref 对象,可以绑定到 vnode 节点上,如果绑定的节点是一个普通节点,其值就为 Node,如果是组件,其值就是组件暴露的对象。
返回值
{ current: any }
用户可以用 current 访问绑定的 ref 对象。
类型声明
declare function createRef<T = any>(): UserRef<T>
示例
import { h, createRef } from 'gyron'
const App = h(() => {
const ref = createRef()
return () =>
h('div', {
ref,
})
})
exposeComponent
暴露组件中的数据给父组件使用。
类型声明
declare function exposeComponent(exposed: Record<string | number, any>): void
示例
import { h, useValue, createRef, exposeComponent } from 'gyron'
const Child = h(() => {
const name = useValue('foo')
exposeComponent({ name })
return h('div', null, name.value)
})
const App = h(() => {
const ref = createRef()
ref.current // {name: {value: 'foo'}}
return () =>
h(Child, {
ref,
})
})
keepComponent
创建一个缓存组件,并且组件的状态可以一直保留。可以使用clearCacheComponent
清空组件缓存。
类型声明
declare function keepComponent<
Props extends object = object,
T extends ComponentSetupFunction<Props> = ComponentSetupFunction<Props>
>(componentFunction: T): WrapperFunction<Props>
示例
import { h, keepComponent } from 'gyron'
const App = keepComponent(() => {
return h('div')
})
clearCacheComponent
传入组件函数,清空组件缓存。
类型声明
declare function clearCacheComponent(
componentFunction: ComponentSetupFunction
): void
示例
import { h, keepComponent, clearCacheComponent } from 'gyron'
const App = keepComponent(() => {
return h('div')
})
clearCacheComponent(App)
useWatch
传入组件函数,清空组件缓存。
类型声明
declare function useWatch<T = any>(
watcher: EffectFunction<T>,
dependency?: Dependency[]
): void
示例
import { h, useWatch } from 'gyron'
const App = h(() => {
useWatch(/* ... */)
return h('div')
})
onBeforeMount
生命周期勾子,组件挂载之前调用。
类型声明
declare function onBeforeMount(callback: LifecycleCallback): void
示例
import { h, onBeforeMount } from 'gyron'
const App = h(() => {
onBeforeMount((component) => {
component // self
})
return () => h('div', 'hello world')
})
onAfterMount
生命周期勾子,组件挂载之后调用。
类型声明
declare function onAfterMount(callback: LifecycleCallback): void
示例
import { h, onAfterMount } from 'gyron'
const App = h(() => {
onAfterMount((component) => {
component.$el // HTMLDivElement
})
return () => h('div', 'hello world')
})
onBeforeUpdate
生命周期勾子,组件更新之前调用。可以返回 Falsy 组织自身和子组件的更新。
类型声明
declare function onBeforeUpdate(callback: LifecycleCallback<boolean>): void
示例
import { h, onBeforeUpdate } from 'gyron'
const App = h(() => {
onBeforeUpdate((component) => {
return false // 当发生变更也不会更新视图
})
return () => h('div', 'hello world')
})
onAfterUpdate
生命周期勾子,组件更新之后调用。
类型声明
declare function onAfterUpdate(callback: LifecycleCallback): void
示例
import { h, onAfterUpdate } from 'gyron'
const App = h(() => {
onAfterUpdate((component) => {
component.$el // DOM元素已经更新
})
return () => h('div', 'hello world')
})
onDestroyed
生命周期勾子,组件销毁之后调用。
类型声明
declare function onDestroyed(callback: LifecycleCallback): void
示例
import { h, onDestroyed } from 'gyron'
const App = h(() => {
const timer = setInterval(() => {
console.log(Date.now())
}, 1000)
onDestroyed((component) => {
clearInterval(timer)
})
return () => h('div', 'hello world')
})
FC
在 typescript 中帮助开发者进行类型推导。
返回值
返回组件本身。
类型声明
declare function FC<Props extends Data = object>(
componentFunction: ComponentSetupFunction<Props, false>
): ComponentSetupFunction<Props, false>
示例
import { FC } from 'gyron'
interface Props {
count: number
}
const Child = FC<Props>(() => {
return ({ count }) => <span>{count}</span>
})
export const App = FC(() => {
return <Child count={1} />
})
FCA
异步组件的包裹函数,提供 fallback 回退方案,支持打包工具异步导入等场景。
类型声明
declare function FCA<Props extends Data = object>(
componentAsyncFunction: AsyncComponentFunction<Props>
): {
(props: AsyncProps<Props>):
| Promise<VNode<VNodeType> | VNode<typeof Comment>>
| ((props: AsyncProps<Props>) => VNode)
__loader: (
props: AsyncProps<Props>
) => Promise<VNode<VNodeType> | VNode<typeof Comment>>
}
示例
import { FCA } from 'gyron'
interface Props {
count: number
}
const Child = FCA<Props>(() => {
return () => import('./Son')
})
export const App = FC(() => {
return <Child fallback={<span>loading...</span>} count={1} />
})