UI Hooks
.useReactive()
用来订阅 Reactive 实例状态变化的钩子函数。
// useReactive(reactive, params)
// @param {ReactiveInstance} reactive
// @param {Object} params
// @prop {string} params.id - 成员唯一标识
// @prop {string} [params.prop] - 成员属性名称
// @returns {Object} - 当指定 params.prop 时,返回成员该属性的设定值、当前值及错误信息构成的对象,
// 否则返回所有属性的设定值、当前值及错误信息构成的对象。返回数据结构详见 context#get() API 文档。
// @example - 在函数组件中订阅成员某属性状态变更
import React from 'react'
import { UI } from 'rcfm/react'
// @namespace UI.React.hooks.useReactive
const useReactive = UI.React.hooks.useReactive
function MyComponent(props = {}) {
const {reactive, memberId} = props
const {
value, error, // value 属性当前值及错误
raw: {value: rawValue, error: rawError} // value 属性设定值及错误
} = useReactive(reactive, {id: memberId, prop: 'value'})
}
// @example - 在函数组件中订阅成员所有属性状态变更
import React from 'react'
import { UI } from 'rcfm/react'
// @namespace UI.React.hooks.useReactive
const useReactive = UI.React.hooks.useReactive
function MyComponent(props = {}) {
const {reactive, memberId} = props
const {
values, errors, // 所有属性当前值及错误
raw: {values: rawValues, errors: rawErrors} // 所有属性设定值及错误
} = useReactive(reactive, {id: memberId})
}
// useReactive(reactive, params)
// @param {ReactiveInstance} reactive
// @param {Object} params
// @prop {string} params.id - 成员唯一标识
// @prop {string} [params.prop] - 成员属性名称
// @returns {VueShallowRef} - 返回的 shallowRef 的 value 值按情况分为:
// 当指定 params.prop 时,是成员该属性的设定值、当前值及错误信息构成的对象,
// 否则是所有属性的设定值、当前值及错误信息构成的对象。返回数据结构详见 context#get() API 文档。
// @example - 在 SFC 中订阅成员某属性状态变更
<script setup>
import { computed } from 'vue'
import { UI } from 'rcfm/vue'
const props = defineProps(['reactive', 'memberId'])
// @namespace UI.Vue.composables.useReactive
const useReactive = UI.Vue.composables.useReactive
const state = useReactive(props.reactive, {
id: props.memberId, prop: 'value'
})
// value 属性当前值及错误
const value = computed(() => state.value.value)
const error = computed(() => state.value.error)
// value 属性设定值及错误
const rawValue = computed(() => state.value.raw.value)
const rawError = computed(() => state.value.raw.error)
</script>
// @example - 在 SFC 中订阅成员所有属性状态变更
<script setup>
import { computed } from 'vue'
import { UI } from 'rcfm/vue'
const props = defineProps(['reactive', 'memberId'])
// @namespace UI.Vue.composables.useReactive
const useReactive = UI.Vue.composables.useReactive
const state = useReactive(props.reactive, {id: props.memberId})
// 所有属性当前值及错误
const values = computed(() => state.value.values)
const errors = computed(() => state.value.errors)
// 所有属性设定值及错误
const rawValues = computed(() => state.value.raw.values)
const rawErrors = computed(() => state.value.raw.errors)
</script>