与优化
与优化
本主题介绍云眼灰度实验 React Native SDK 的高阶组件withEyeofcloud
。
通过使用高阶组件(HoC)'withEyeofcloud,EyeofcloudProvider下的任何组件都可以访问Eyeofcloud灰度发布 ReactSDKClient,它公开了Eyeofcloud信息和API。
版本
SDK v2.2.0
描述
withEyeofcloud
组件提供对所有标准 SDK 方法(如 Decide 方法)的访问,如果不想使用 React 组件或钩子(如 useDecision)与 Eyeofcloud 交互。通过为包装的组件提供eyeofcloud
prop,withEyeofcloud 高阶组件也使得使用这些标准 SDK 方法更加方便。
eyeofcloud
对象会自动与传递给祖先 EyeofcloudProvider 的用户属性相关联。结果是,该用户对象的 id 和属性将自动转发到所有相应的 SDK 方法调用。因此,在使用withEyeofcloud
后调用eyeofcloud
客户端对象的方法时,无需传递 userId 或属性参数,除非希望使用与提供给 EyeofcloudProvider 的 userId 或属性不同的属性。
参数
下表列出了 React Native SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
元件 | React组件 | 将使用以下道具增强的组件 |
提供的道具
支柱 | 类型 | 描述 |
---|---|---|
云眼 | ReactSDKClient | 传递给云眼提供程序的客户端对象 |
优化就绪超时 | 号码 定义 | 传递给云眼提供程序的超时 |
is服务器端 | 布尔 | 传递给云眼提供程序的值 |
返回
带有附加道具的包装组件,如上所述
例
React
import { withEyeofcloud } from '@eyeofcloud/react-sdk'
class MyComp extends React.Component {
constructor(props) {
super(props)
const { eyeofcloud } = this.props
const decision = eyeofcloud.decide('feat1')
this.state = {
decision.enabled,
decision.variables,
}
}
render() {
}
}
const WrappedMyComponent = withEyeofcloud(MyComp)
跟踪(与云眼一起使用)
React
import { Button } from 'react-native';
import { withEyeofcloud } from '@eyeofcloud/react-sdk';
class SignupButton extends React.Component {
onPress = () => {
const { eyeofcloud } = this.props
eyeofcloud.onReady().then(() => {
eyeofcloud.track('signup-clicked')
})
// rest of click handler
}
render() {
<Button onPress={this.onPress}>
Signup </Button>
}
}
const WrappedSignupButton = withEyeofcloud(SignupButton)
🚧 重要
如上所述,通过withEyeofcloud提供的客户端对象会自动与传递给祖先EyeofcloudProvider的用户属性相关联。调用 track 时无需传递 userId 或属性参数,除非希望使用与提供给 EyeofcloudProvider 的 userId 或属性不同的 userId 或属性。
eyeofcloud
源
包含 React 实现的语言/平台源文件是 index.ts。