【问题标题】:How can I programmatically set the user details for Launch Darkly in my react app如何在我的反应应用程序中以编程方式设置 Launch Darkly 的用户详细信息
【发布时间】:2020-01-12 06:17:59
【问题描述】:

我将我的 App.js 文件包装在 withLDProvider 组件中,我想知道如何从我的 App 函数内部设置用户信息。

假设我在我的 App 函数中获取了缓存在 Dexie 中的用户名,如何在导出 App 函数时将该用户信息传递到设置用户详细信息的位置。

我已经可以获取我所有的用户信息,只是不确定我应该如何传递用户信息。我觉得我在这里采取了错误的方法,但不太确定该怎么做。

import React from 'react';
import './App.css';
import { withLDProvider } from 'launchdarkly-react-client-sdk';
import HelloWorld from './HelloWorld';

const App = () => {
  const [user, setUser] = useState({});

  // Let's say for example that I asynchronously get my
  // user information here and use hooks to set the user

  return (
    <div className="App">
      <header className="App-header">
        {
           user ? <HelloWorld  />
           : <div>A login screen would go here</div>
        }
      </header>
    </div>
  );
}

export default withLDProvider({
  clientSideID: 'client_id',
  user: {
    key: 'user_key',
    name: 'User Name',
    email: 'User@email.com'
  }
})(App);

【问题讨论】:

  • 一般我们获取用户信息并将其保存在全局状态。然后,您可以在所有组件中访问它。为了处理全局状态,我们使用库 Redux(用于更复杂的应用程序)、Mobx。您还可以使用 Context API 来处理全局状态。
  • 因此,假设我确实将其存储在全局状态中,那么当将用户作为 LD 配置传递时,如何在导出语句中提取该信息?那句话会是什么样子?

标签: reactjs launchdarkly


【解决方案1】:

欢迎任何更好的想法,但这似乎目前可行

似乎我设法错过了文档中的答案。

我最终做的是在没有用户的情况下初始化 LD,然后使用 identify() 函数将用户设置在层次结构中的下一级。它可以从传递给任何子组件的 ldclient 属性中获得。

ldclient.identify(newUser, hash, function() {
  console.log("New user's flags available");
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 2015-07-14
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多