readersigned out
Loading
Náhľad beží na ukážkových dátach. Nepotrebuje sieť ani kanál.
tsx
import { useDiscussions, YuvaDiscussionsProvider } from "@/hooks/use-yuva-discussions"
function Titles() {
const { discussions, loading } = useDiscussions("/docs/getting-started", "top")
if (loading) return null
return (
<ul>
{discussions.map((discussion) => (
<li key={discussion.id}>{discussion.title}</li>
))}
</ul>
)
}
export function Docs() {
return (
<YuvaDiscussionsProvider
server={process.env.NEXT_PUBLIC_YUVA_SERVER}
channel={process.env.NEXT_PUBLIC_YUVA_CHANNEL}
>
<Titles />
</YuvaDiscussionsProvider>
)
}Inštalácia
Spustite to v projekte shadcn. Súbory sa skopírujú do vášho vlastného kódu.
Shell
npx shadcn@latest add https://useyuva.com/r/use-yuva-discussions.jsonShell
pnpm dlx shadcn@latest add https://useyuva.com/r/use-yuva-discussions.jsonShell
yarn dlx shadcn@latest add https://useyuva.com/r/use-yuva-discussions.jsonShell
bunx --bun shadcn@latest add https://useyuva.com/r/use-yuva-discussions.jsonPoužitie
tsx
import { useDiscussions, YuvaDiscussionsProvider } from "@/hooks/use-yuva-discussions"
const { discussions, loading } = useDiscussions(page, "top")Props
YuvaDiscussionsProviderProps
| Prop | Typ |
|---|---|
server? | string |
channel? | string |
identityToken? | IdentityTokenSource | null |
client? | YuvaClient |
labels? | Partial<YuvaDiscussionsLabels> |
locale? | string |
children? | React.ReactNode |
DiscussionsResult
| Prop | Typ |
|---|---|
discussions | Discussion[] |
loading | boolean |
error | unknown |
hasMore | boolean |
loadMore | () => Promise<void> |
reload | () => Promise<void> |
start | (input: Omit<ClientDiscussionCreate, "page_url"> & { page_url?: string }) => Promise<Discussion> |
DiscussionResult
| Prop | Typ |
|---|---|
discussion | Discussion | null |
opening | DiscussionPost | null |
posts | DiscussionPost[] |
loading | boolean |
error | unknown |
reload | () => Promise<void> |
reply | (body: string, parentPostId?: string) => Promise<DiscussionPost> |
vote | (post: DiscussionPost) => Promise<void> |
follow | (following: boolean) => Promise<void> |
accept | (postId: string | null) => Promise<void> |
edit | (postId: string, input: ClientDiscussionPostUpdate) => Promise<void> |
remove | (postId: string) => Promise<boolean> |
YuvaReaderState
| Prop | Typ |
|---|---|
reader | ReaderSession | null |
writer | YuvaWriter |
ready | boolean |
signIn | () => Promise<ReaderSession> |
signOut | () => Promise<void> |
Popisky
Každý popisok má anglickú predvolenú hodnotu. Ak ich chcete zmeniť alebo preložiť, odovzdajte čiastočný objekt labels.
| Popisok | Predvolené |
|---|---|
heading | "Discussions" |
sortNew | "New" |
sortTop | "Top" |
sortUnanswered | "Unanswered" |
newDiscussion | "New discussion" |
empty | "No discussions on this page yet. Start the first one." |
emptyUnanswered | "Every discussion on this page has an answer." |
loadMore | "Load more" |
loadError | "Discussions could not be loaded." |
retry | "Try again" |
back | "All discussions" |
replies | (count) => (count === 1 ? "1 reply" : `${count} replies`) |
votes | (count) => (count === 1 ? "1 vote" : `${count} votes`) |
answered | "Answered" |
acceptedAnswer | "Accepted answer" |
markAnswer | "Mark as answer" |
unmarkAnswer | "Unmark as answer" |
locked | "Locked" |
lockedNote | "This discussion is locked. It takes no new replies." |
pending | "Awaiting approval" |
pendingNote | "Only you can see this until a moderator approves it." |
upvote | "Upvote" |
removeUpvote | "Remove upvote" |
reply | "Reply" |
follow | "Follow" |
unfollow | "Unfollow" |
edit | "Edit" |
save | "Save" |
cancel | "Cancel" |
delete | "Delete" |
deleteConfirm | "Delete this post?" |
edited | "edited" |
deletedPost | "This post was deleted." |
deletedAuthor | "Deleted reader" |
deletedMember | "Deleted member" |
anonymous | "Anonymous" |
team | "Team" |
signIn | "Sign in" |
signInHint | "Sign in to start a discussion, reply and vote." |
signOut | "Sign out" |
signedInAs | (name) => `Signed in as ${name}` |
titleLabel | "Title" |
titlePlaceholder | "What is your question or idea?" |
bodyLabel | "Message" |
bodyPlaceholder | "Add the details. Markdown works." |
replyPlaceholder | "Write a reply. Markdown works." |
write | "Write" |
preview | "Preview" |
previewEmpty | "Nothing to preview." |
markdownHint | "Markdown is supported." |
startDiscussion | "Start discussion" |
postReply | "Reply" |
errorSignIn | "Sign in to post." |
errorLocked | "This discussion is locked." |
errorEditWindow | "Posts can be edited for 30 minutes after posting." |
errorRateLimited | "Too many posts. Wait a minute and try again." |
errorPopupBlocked | "Allow pop-ups for this site to sign in." |
errorOff | "Discussions are turned off." |
errorGeneric | "Something went wrong. Try again." |
feedbackQuestion | "Was this page helpful?" |
feedbackYes | "Yes" |
feedbackNo | "No" |
feedbackThanks | "Thanks for your feedback." |
Závislosti
Inštalácia tejto položky pridá aj nasledovné.