2.10.0
中文
Skip to content

useXConversations ​

Manage session list and current session. conversations and activeConversationKey are shallowRef, and after matching with conversationKey of useXChat, each conversation has its own message.

ts
const {
  conversations,
  activeConversationKey,
  setActiveConversationKey,
  addConversation,
  removeConversation,
  setConversation,
  setConversations,
  getConversation,
  getMessages,
} = useXConversations({
  defaultConversations: [{ key: '1', label: 'New chat' }],
  defaultActiveConversationKey: '1',
});

addConversation(conversation, 'prepend' | 'append'). The conversation object must have at least a key.

Basic usage ​

  • Conversation Item 1
  • Conversation Item 2
  • This's Conversation Item 3, you can click me!
  • Conversation Item 4
Basic usage

Uses useXConversations to drive the conversation list.

Conversation actions ​

  • Conversation Item 1
  • Conversation Item 2
  • This's Conversation Item 3, you can click me!
  • Conversation Item 4
Current Conversation Data:
{
  "key": "item1",
  "label": "Conversation Item 1",
  "disabled": false
}
Conversation actions

Create, update, reset, and delete from the menu.

Multiple instances ​

List 1

  • Conversation Item 1
  • Conversation Item 2
  • This's Conversation Item 3, you can click me!
  • Conversation Item 4

List 2

  • Conversation Item 1
  • Conversation Item 2
Multiple instances

Two independent useXConversations instances do not affect each other.

Use with useXChat ​

  • Conversation Item 1
  • Conversation Item 2
  • This's Conversation Item 3, you can click me!
  • Conversation Item 4
Use with useXChat

Messages stay under each conversation key; requests use a local mock, not an external API key.

API ​

useXConversations ​

ts
type useXConversations = (config?: XConversationConfig) => {
  conversations: ShallowRef<ConversationData[]>;
  activeConversationKey: ShallowRef<string>;
  setActiveConversationKey: (key: string) => boolean;
  addConversation: (conversation: ConversationData, placement?: 'prepend' | 'append') => boolean;
  removeConversation: (key: string) => boolean;
  setConversation: (key: string, conversation: ConversationData) => boolean;
  getConversation: (key: string) => ConversationData | undefined;
  setConversations: (conversations: ConversationData[]) => boolean;
  getMessages: (conversationKey: string) => unknown;
};

XConversationConfig ​

PropDescriptionTypeDefaultVersion
defaultConversationsDefault conversation listConversationData[][]-
defaultActiveConversationKeyDefault current conversation keystring''-

ConversationData ​

ts
interface ConversationData extends AnyObject {
  key: string;
  label?: string;
}

Return ​

PropDescriptionTypeDefaultVersion
conversationsConversation list (shallowRef)ShallowRef<ConversationData[]>--
activeConversationKeyCurrent conversation key (shallowRef)ShallowRef<string>--
setActiveConversationKeySwitch current conversation(key: string) => boolean--
addConversationAdd a new conversation(conversation: ConversationData, placement?: 'prepend''append') => boolean-
removeConversationRemove a conversation(key: string) => boolean--
setConversationUpdate a single conversation(key: string, conversation: ConversationData) => boolean--
getConversationGet a conversation by key(key: string) => ConversationDataundefined-
setConversationsReplace the entire conversation list(conversations: ConversationData[]) => boolean--
getMessagesRead message snapshots by conversation key(conversationKey: string) => unknown--