ReactSDKClient

云眼About 4 min

ReactSDKClient

本主题介绍 ReactSDKClient,这是一个包装器,如果不想使用组件与云眼灰度实验进行交互,则允许访问标准 SDK 方法。

ReactSDKClient 是一个包装器,如果不想使用 React 组件或钩子(例如 useDecision)与 Eyeofcloud灰度发布 进行交互,则可以访问标准 SDK 方法,例如 Decide 方法。与其他 SDK 不同,不需要在每次调用方法时都向它们提供用户信息,只要在实例化时传递用户信息即可。以下部分介绍 ReactSDKClient 提供的方法。

版本

SDK v2.2.0

描述

ReactSDKClient 的实例是用 创建的,它也被传递给具有高阶组件的 prop 中的子组件。createInstance``eyeofcloud``withEyeofcloud

ReactSDKClient 在下面提供了以下 API 接口。请注意,如果实例是由 或 如果被调用,则在调用云眼客户端对象的方法时,不需要传入 userId 或属性参数,除非希望使用与 or 不同的 userId 或属性。 withEyeofcloud``setUser``EyeofcloudProvider``setUser

提供的接口

  • onReady(opts?: { timeout?: number }): Promise 返回一个 Promise,该 Promise 通过表示数据文件提取过程的对象来实现。参见 JavaScript: onReady
  • user: User 与此客户端实例关联的当前用户
  • setUser(userInfo: User): void 调用此函数以更新当前用户
  • onUserUpdate(handler: (userInfo: User) => void): () => void 订阅要在此实例的当前用户更改时调用的回调。返回将取消订阅回调的函数。
  • decide(key: string, options?: eyeofcloud.EyeofcloudDecideOption[], overrideUserId?: string, overrideAttributes?: eyeofcloud.UserAttributes): EyeofcloudDecision 返回用户的标帜键的决策结果。决策结果在 EyeofcloudDecision 对象中返回,并包含传递标帜规则所需的所有数据。
  • decideAll(options?: eyeofcloud.EyeofcloudDecideOption[], overrideUserId?: string, overrideAttributes?: eyeofcloud.UserAttributes): { [key: string]: EyeofcloudDecision } 返回用户的所有活动(未存档)标帜的决策。
  • decideForKeys(keys: string[], options?: eyeofcloud.EyeofcloudDecideOption[], overrideUserId?: string, overrideAttributes?: eyeofcloud.UserAttributes): { [key: string]: EyeofcloudDecision } 返回由标帜键映射的决策结果的对象。
  • activate(experimentKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): string | null 激活实验,并返回给定用户的变体。
  • getVariation(experimentKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): string | null 返回给定实验和用户的变体。
  • getFeatureVariables(featureKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): VariableValuesObject :决定并返回给定标帜和用户的变量值
  • getFeatureVariableString(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: eyeofcloud.UserAttributes): string | null :确定并返回给定特征、变量和用户的变量值
  • getFeatureVariableInteger(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): number | null 确定并返回给定功能、变量和用户的变量值
  • getFeatureVariableBoolean(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): boolean | null 确定并返回给定功能、变量和用户的变量值
  • getFeatureVariableDouble(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): number | null 确定并返回给定功能、变量和用户的变量值
  • isFeatureEnabled(featureKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): boolean 返回给定标帜和用户的启用状态
  • getEnabledFeatures(overrideUserId?: string, overrideAttributes?: UserAttributes): Array<string> :返回为给定用户启用的所有功能的键
  • track(eventKey: string, overrideUserId?: string | EventTags, overrideAttributes?: UserAttributes, eventTags?: EventTags): void 将事件跟踪到云眼灰度实验结果后端
  • setForcedVariation(experiment: string, overrideUserIdOrVariationKey: string, variationKey?: string | null): boolean 为给定实验、变体和用户设置强制变体
  • getForcedVariation(experiment: string, overrideUserId?: string): string | null 获取给定实验、变体和用户的强制变体
  • setForcedDecision(decisionContext: eyeofcloud.EyeofcloudDecisionContext, decision: eyeofcloud.EyeofcloudForcedDecision): void 为指定的云眼灰度实验决策上下文设置强制决策
  • getForcedDecision(decisionContext: eyeofcloud.EyeofcloudDecisionContext): eyeofcloud.EyeofcloudForcedDecision | null 返回指定的云眼灰度实验决策上下文的强制决策
  • removeForcedDecision(decisionContext: eyeofcloud.EyeofcloudDecisionContext): boolean 删除指定的云眼灰度实验决策上下文的强制决策
  • removeAllForcedDecisions(): boolean 删除所有强制决策

获取 ReactSDKClient 实例以使用 API 的示例: withEyeofcloud``track

React

import React from 'react'; import { Button } from 'react-native'; import { withEyeofcloud } from '@eyeofcloud/react-sdk' class SignupButton extends React.Component { onPress = () => { // eyeofcloud is an instance of ReactSDKClient provided by withEyeofcloud const { eyeofcloud } = this.props // track API provided by the ReactSDKClient instance // Notice, no userId or attributes are necessary since // eyeofcloud has been provided by withEyeofcloud eyeofcloud.track('signup-clicked') // rest of click handler } render() { <Button onPress={this.onPress}> Signup </Button> } } const WrappedSignupButton = withEyeofcloud(SignupButton)

Example of getting an instance of ReactSDKClient from :createInstance

React

import React from 'react'; import { View, Button } from 'react-native'; import { createInstance, EyeofcloudProvider, } from '@eyeofcloud/react-sdk' const eyeofcloud = createInstance({ sdkKey: 'CxpSJttFVpz8LiLg8jnZwq', }) eyeofcloud.setUser({ id: 'user123', attributes: { device: 'iPhone', lifetime: 24738388, is_logged_in: true, } }); eyeofcloud.track('Application Loaded') function App() { return ( <EyeofcloudProvider eyeofcloud={eyeofcloud}> <View> <Text>Application</Text> </View> </EyeofcloudProvider> ); } export default App;

打字稿类型

接口中使用以下类型定义:ReactSDKClient

  • UserAttributes : { [name: string]: any }
  • User : { id: string | null, attributes: userAttributes }
  • VariableValuesObject : { [key: string]: boolean | number | string | null }
  • EventTags : { [key: string]: string | number | boolean; }

包含 React Native SDK 实现的语言/平台源文件是 index.tsopen in new window

Last update:
Contributors: “zhangweixue”