Shadcn выберите значение по умолчанию

Я использую React с Shadcn, вот код:

<div className = {'mb-8'}>
      <Select>
        <SelectTrigger className = "w-[300px] text-foreground">
          <SelectValue/>
        </SelectTrigger>
        <SelectContent>
          <SelectGroup>
            <SelectItem value = "apples">Apples</SelectItem>
            <SelectItem value = "bananas">Bananas</SelectItem>
            <SelectItem value = "mangos">Mangos</SelectItem>
          </SelectGroup>
        </SelectContent>
      </Select>
    </div>

Как сделать так, чтобы default value выбирался при рендеринге компонента? Например, я хочу, чтобы меня выбрали apples?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
0
5 614
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Редактировать:

Важно отметить, что существует два способа использования входа Select: контролируемый и неконтролируемый. Это решение предназначено для неконтролируемого использования, то есть вам не нужно вручную сохранять значение Select. Ответ Берсана показывает способ сделать это контролируемым способом. Вот рабочий пример , показывающий оба варианта использования.


Компонент Select в Shadcn создан на основе Select Primitive Radix. Обычно в верхней части документации компонента Shadcn есть ссылка на реквизиты компонента. Чтобы установить значение по умолчанию для <Select>, добавьте реквизит defaultValue следующим образом:

<Select defaultValue='apples'>
  ...
</Select>

Более подробную информацию о реквизите вы можете найти здесь.

Это не работает, либо то, либо ответ не полный

Bersan 04.05.2024 21:50

Это работает. Существует два способа использования входа выбора: контролируемый и неконтролируемый. Автор вопроса бесконтрольно использовал вход select. Ваш ответ показывает, как использовать его под контролем.

Rico 05.05.2024 22:13

Вот более полный пример установки значения по умолчанию и управления состоянием:

import React, { useState } from 'react'

import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '../ui/select'

const [selectedOption, setSelectedOption] = useState('apple')

<Select
  value = {selectedOption}
  onValueChange = {(value) => {
    setSelectedOption(value)
  }}
>
  <SelectTrigger className = "w-[180px]">
    <SelectValue placeholder = "Select a fruit" />
  </SelectTrigger>
  <SelectContent>
    <SelectGroup>
      <SelectItem value = "apple">Apple</SelectItem>
      <SelectItem value = "banana">Banana</SelectItem>
      <SelectItem value = "blueberry">Blueberry</SelectItem>
      <SelectItem value = "grapes">Grapes</SelectItem>
      <SelectItem value = "pineapple">Pineapple</SelectItem>
    </SelectGroup>
  </SelectContent>
</Select>

ПОПРОБУЙТЕ АРИЯ-ЭТИКЕТКА

function SelectMenu({
  name,
  data,
  value,
  onValueChange,
  defaultValue,
}: ISelectMenu) {
  return (
    <label className = "w-full relative">
      <span className = "absolute p-[5px] bg-black text-mySelect text-xs font-medium -top-[15px] left-5">
        {name}
      </span>
      <Select onValueChange = {onValueChange} value = {value}>
        <SelectTrigger className = "w-full text-myText rounded-[15px] py-5 px-[20px]">
          <SelectValue className = {"text-white"} aria-label = {value} />
        </SelectTrigger>
        <SelectContent>
          <SelectGroup>
            {data?.map((item, index) => (
              <SelectItem value = {item.value} key = {index}>
                {item.item}
              </SelectItem>
            ))}
          </SelectGroup>
        </SelectContent>
      </Select>
    </label>
  );
}

Другие вопросы по теме