使用决策钩
May 11, 2023About 4 min
使用决策钩
本主题介绍 useDecision 钩子,它检索云眼特性标帜(Feature Flag)AB实验 React SDK 的标帜键的决策结果。
版本
SDK v2.5 及更高版本
使用决策钩
检索标帜键的决策结果,可以选择根据基础用户、数据文件或强制决策更改自动更新该决策。
参数
论点 | 类型 | 描述 |
---|---|---|
标帜键(必填) | 字符串 | 灰度标帜的键 |
选项(可选) | 对象 | 包括以下内容: autoUpdate (布尔值)- 如果为 true,则此挂钩将更新标帜决策以响应数据文件或用户更改。默认值:假。 timeout (数字) - 客户端超时,如云眼提供程序部分所述。覆盖在祖先云眼提供程序上设置的任何超时。 decideOptions (EyeofcloudDecideOption) - Array of EyeofcloudDecideOption enums.请参阅云眼决策选项。 |
替代(可选) | 对象 | 包括以下内容: overrideUserId (字符串)- 覆盖要用于获取此挂钩的决策结果的 userId。 overrideAttributes (云眼用户属性) - 覆盖用于获取此挂钩的决策结果的用户属性。 |
返回
描述
标帜键(必填)
字符串
特性标帜(Feature Flag)的键
选项(可选)
对象
包括以下内容:
(布尔值)- 如果为 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选项
以下示例显示了如何在useDecision
挂钩上单独设置选项,或在实例化 Eyeofcloud 客户端时将其设置为全局默认值。请参见初始化软件开发工具包。
React
import { useEffect } from 'react'; i
mport {
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 变量来最小化返回的决策。 |