> ## Documentation Index
> Fetch the complete documentation index at: https://docs.towns.com/llms.txt
> Use this file to discover all available pages before exploring further.

# useMember

Hook to get data from a specific member of a Space, GDM, Channel, or DM.

## Imports

```ts theme={null}
import { useMember } from '@towns-protocol/react-sdk'
```

## Definition

```ts theme={null}
function useMember(
  props: {
    streamId: string;
    userId: string;
},
  config?: ObservableConfig.FromObservable<Member>,
): {
    error: Error | undefined;
    status: "loading" | "loaded" | "error";
    isLoading: boolean;
    isError: boolean;
    isLoaded: boolean;
    userId: string;
    streamId: string;
    initialized: boolean;
    username: string;
    isUsernameConfirmed: boolean;
    isUsernameEncrypted: boolean;
    displayName: string;
    isDisplayNameEncrypted: boolean | undefined;
    ensAddress: string | undefined;
    nft: NftModel | undefined;
    membership: MembershipOp | undefined;
}
```

**Source:** [useMember](https://github.com/towns-protocol/towns/blob/main/packages/react-sdk/src/useMember.ts)

## Parameters

### props

* **Type:** `{
    streamId: string;
    userId: string;
  }`

The streamId and userId of the member to get data from.

### config

* **Type:** `ObservableConfig.FromObservable<Member>`
* **Optional**

Configuration options for the observable.

## Return Type

The Member data.

```ts theme={null}
{
    error: Error | undefined;
    status: "loading" | "loaded" | "error";
    isLoading: boolean;
    isError: boolean;
    isLoaded: boolean;
    userId: string;
    streamId: string;
    initialized: boolean;
    username: string;
    isUsernameConfirmed: boolean;
    isUsernameEncrypted: boolean;
    displayName: string;
    isDisplayNameEncrypted: boolean | undefined;
    ensAddress: string | undefined;
    nft: NftModel | undefined;
    membership: MembershipOp | undefined;
}
```
