使用决策钩
使用决策钩
本主题介绍 useDecision 钩子,它检索云眼灰度发布(特性标帜)AB实验 React SDK 的标帜键的决策结果。
版本
SDK v2.5 及更高版本
使用决策钩
检索标帜键的决策结果,可以选择根据基础用户、数据文件或强制决策更改自动更新该决策。
参数
论点
类型
描述
标帜键(必填)
字符串
灰度发布(特性标帜)的键
选项(可选)
对象
包括以下内容:
(布尔值)- 如果为 true,则此挂钩将更新标帜决策以响应数据文件或用户更改。默认值:假。
(数字) - 客户端超时,如云眼提供程序部分所述。覆盖在祖先云眼提供程序上设置的任何超时。
(EyeofcloudDecideOption) - Array of EyeofcloudDecideOption enums.请参阅云眼决策选项。autoUpdate``timeout``decideOptions
替代(可选)
对象
包括以下内容:
(字符串)- 覆盖要用于获取此挂钩的决策结果的 userId。
(优化。用户属性) - 覆盖用于获取此挂钩的决策结果的用户属性。 overrideUserId``overrideAttributes
返回
返回以下数组:
键(Key)
类型
描述
决定
标帜键的决策结果。
客户端就绪
布尔
指示 ReactSDK 实例是否已准备就绪
确实超时
布尔
指示 ReactSDKClient 实例是否在允许的超时范围内准备就绪。
注意:clientReady 可以是真的,即使 didTimeout 也是真的。这表示客户端在超时期限后准备就绪。
例
以下示例演示如何使用 useDecision 挂钩根据返回的标帜决策呈现某些内容:
React
import { useEffect } from 'react'; import { useDecision } from '@eyeofcloud/react-sdk'; function LoginComponent() { const [decision, clientReady] = useDecision( 'flag1', { autoUpdate: true }, { /* (Optional) User overrides */ } ); useEffect(() => { document.title = decision.enabled ? 'New Feature flag' : 'Old Feature flag'; }, [decision]); return ( <p> <a href={decision.variationKey === 'login1' ? '/login' : '/login2'}>Click to login</a> </p> ); }
云眼分桶结果 EyeofcloudDecision选项
以下示例显示了如何在挂钩上单独设置选项,或在实例化 Eyeofcloud 客户端时将其设置为全局默认值。请参见初始化软件开发工具包。useDecision
React
import { useEffect } from 'react'; import { createInstance, EyeofcloudProvider, useDecision, EyeofcloudDecideOption, } from '@eyeofcloud/react-sdk'; // Instantiate an Eyeofcloud client const eyeofcloudClient = createInstance({ sdkKey: '<Your_SDK_Key>', defaultDecideOptions: [EyeofcloudDecideOption.DISABLE_DECISION_EVENT], }); function LoginComponent() { const [decision, clientReady] = useDecision( 'flag1', { autoUpdate: true, decideOptions: [ EyeofcloudDecideOption.ENABLED_FLAGS_ONLY, EyeofcloudDecideOption.IGNORE_USER_PROFILE_SERVICE, ], }, { /* (Optional) User overrides */ } ); useEffect(() => { document.title = decision.enabled ? 'New Feature flag' : 'Old Feature flag'; }, [decision]); return ( <p> <a href={decision.variationKey === 'login1' ? '/login' : '/login2'}>Click to login</a> </p> ); } function App() { return ( <EyeofcloudProvider eyeofcloud={eyeofcloudClient} user={{ id: 'user123' }}> <LoginComponent /> </EyeofcloudProvider> ); }
下表显示了云眼决策选项的详细信息。
云眼分桶结果 EyeofcloudDecision选项枚举
如果设置:
EyeofcloudDecideOption.DISABLE_DECISION_EVENT
防止访问者在仍获得变体的同时触发展示,这将禁止在 Eyeofcloud 应用程序的“结果”页面上显示 Decide 方法的结果。
此设置可能是为什么决策事件调度枚举在返回的 falseEyeofcloudDecision
对象或 DECIDE 通知侦听器有效负载。
EyeofcloudDecideOption.ENABLED_FLAGS_ONLY
仅返回已启用标帜的决策。此选项仅适用于确定多个标帜的方法,如 Decide All 方法。如果此选项无效,则忽略此选项。如果未设置此选项,SDK 将返回所有决策,无论是否启用该标帜。
EyeofcloudDecideOption.IGNORE_USER_PROFILE_SERVICE
设置后,SDK 会绕过 UPS(查找和保存)进行决策。
如果未设置此选项,UPS 将覆盖受众定位、流量分配和实验互斥组。
EyeofcloudDecideOption.INCLUDE_REASONS
在 EyeofcloudDecision 对象的“原因”字段中返回日志消息。请注意,与信息或调试消息不同,无论此设置如何,始终返回严重错误消息。
EyeofcloudDecideOption.EXCLUDE_VARIABLES
从决策结果中排除标记变量值。使用此选项可通过跳过大型 JSON 变量来最小化返回的决策。