0

我正在尝试在我的 react(Nextjs) 应用程序中实现 StatSig(参考: https ://docs.statsig.com/)功能。我创建了新的功能门changeComponentUI,并且规则已添加为Environment Tier-> Any of- staging, development。从客户端我正在尝试将数据检索为,即使它处于打开状态const statsigFeatureOn = useGate('changecomponentui').value,我也总是会获得价值。false

在 app.js 我已经初始化像,

<StatsigProvider
   sdkKey={"client-PsdasdASQW6556aIOPASASsqwewqeGSsad"}
   user={{ userId, }}
   options={{ environment: { tier: 'staging' } }}
   waitForInitialization={true}
 >
    <Component {...args} />
</StatsigProvider>

在浏览器的网络选项卡中,我得到 -

请求有效载荷,

{"user":{"userID":"","statsigEnvironment":{"tier":"staging"}},"statsigMetadata":{"sessionID":"433h67a3-416c-4914-82fd-e3c2b12f7n05","sdkType":"react-client","sdkVersion":"0.5.1","stableID":"8d122318-6d18-2322-889a-83c10e44e46"}}

输出是(预览),

{
"gates": {
    "+ZpxDXVQ/Rbhf02jl1Yv91VU+X+c0Gq/DZM+CmjPJgc=": false,
    "uwglh6w2Nas8RufxC82qrsVAohod9gsGpvaT6/1l7ts=": false,
    "sKSndsyjj+9MYUFlHPcdavbtA38g1+PjhofnyTDSxU8=": false,
    "w9AtEJ/+vqrqb1kh8KPvhN2Rd32mkwfR+gxvlesY4ac=": true,
    "gUZn3VlwEVdqBs7NcXGWHpBueNz0rlZGTufpLeB8Fug=": false
},
"feature_gates": {
    "+ZpxDXVQ/Rbhf02jl1Yv91VU+X+c0Gq/DZM+CmjPJgc=": {
        "name": "+ZpxDXVQ/Rbhf02jl1Yv91VU+X+c0Gq/DZM+CmjPJgc=",
        "value": false,
        "rule_id": "",
        "secondary_exposures": []
    },
    "uwglh6w2Nas8RufxC82qrsVAohod9gsGpvaT6/1l7ts=": {
        "name": "uwglh6w2Nas8RufxC82qrsVAohod9gsGpvaT6/1l7ts=",
        "value": false,
        "rule_id": "",
        "secondary_exposures": []
    },
    "sKSndsyjj+9MYUFlHPcdavbtA38g1+PjhofnyTDSxU8=": {
        "name": "sKSndsyjj+9MYUFlHPcdavbtA38g1+PjhofnyTDSxU8=",
        "value": false,
        "rule_id": "default",
        "secondary_exposures": []
    },
    "w9AtEJ/+vqrqb1kh8KPvhN2Rd32mkwfR+gxvlesY4ac=": {
        "name": "w9AtEJ/+vqrqb1kh8KPvhN2Rd32mkwfR+gxvlesY4ac=",
        "value": true,
        "rule_id": "6ZcQ0LOgAi2kSd5QgbtJzJ",
        "secondary_exposures": []
    },
    "gUZn3VlwEVdqBs7NcXGWHpBueNz0rlZGTufpLeB8Fug=": {
        "name": "gUZn3VlwEVdqBs7NcXGWHpBueNz0rlZGTufpLeB8Fug=",
        "value": false,
        "rule_id": "default",
        "secondary_exposures": []
    }
},
"configs": {},
"dynamic_configs": {},
"sdkParams": {},
"has_updates": true,
"time": 1631164754145
}

我怎样才能在这里获得真正的价值?同样在输出中,有一个具有true价值的对象,但我没有得到它是针对哪个特征门的数据。

请帮我解决这个问题。

4

1 回答 1

3

确保您使用的是控制台中的确切 ID。const statsigFeatureOn = useGate('changecomponentui').value在这种情况下,如果功能名称是“ChangeComponentUI”但 id 是“changecomponentui” ,您可能需要这样做。我相信所有 ID 目前都是小写的,但骆驼大小写可能是不这样做的一个很好的理由(或者不区分大小写)

(编辑)通过相同步骤创建门后,以下代码片段在 next.js 中适用于我:

import React from "react";
import { StatsigProvider, useGate } from "statsig-react";

export default function App(): JSX.Element {
  return (
      <StatsigProvider
        sdkKey={"client-(redacted)"}
        user={{ userID: "" }} // Fixed from userId, but since userID didn't matter both worked in this case
        options={{ environment: { tier: "staging" } }}
        waitForInitialization={true}
      >
        <TestComponent />
      </StatsigProvider>
  );
}

function TestComponent() {
  const statsigFeatureOn = useGate("changecomponentui").value;
  return <div>{String(statsigFeatureOn)}</div>;
}
于 2021-09-09T14:51:07.170 回答