#reactjs
#reactjs
Вопрос:
Я использую пакет ‘react-select’ для создания выпадающего списка с несколькими вариантами выбора и добавления реквизитов в соответствии с моими требованиями. Но я хочу еще одного: я делаю так, чтобы заполнитель перемещался вправо от параметров после выбора значений из выпадающего списка.
Как и на изображении, выбран один параметр, а заполнитель все еще отображается. Я хочу что-то вроде этого, чтобы при выборе заполнителя значений он смещался вправо от параметров.Вот как я использую.
<Select
placeholder='Type Team Name...'
value={getOptions(value)}
options={getOptions(data)}
onChange={(data) => setValue(data || [])}
styles={selectStyles}
isMulti
isClearable
isSearchable
/>
```
Комментарии:
1. вы хотите, чтобы заполнитель оставался на своем месте или перемещался вправо от параметров
2. перемещение вправо от параметров при их выборе.
3. мне трудно анализировать, можете ли вы воссоздать это в онлайн-среде разработки, такой как codesandbox, и сбросить мне ссылку
4. codesandbox.io/s/keen-black-jfpor?file=/example.js Я отредактировал этот пример, который я где-то нашел. Заполнитель исчезает при выборе значений, но я хочу, чтобы этот заполнитель смещался вправо от выбранных параметров.
5. я получил решение и поделился рабочим кодом
Ответ №1:
Основной файл Javascript :
import React from "react";
import "./example.css"
import Select from "react-select";
import { colourOptions } from "./data";
setTimeout(async ()=>{
const reqinput= await document.getElementById("react-select-2-input");
if(reqinput){
reqinput.placeholder = "slect colors....";
reqinput.style.width="550px"
}else{
console.log("thu")
}
},200)
const Example=()=>{
return(
<Select
defaultValue=""
placeholder="select colors..."
isMulti
name="colors"
options={colourOptions}
className="basic-multi-select"
classNamePrefix="select"
/>
)
}
export default Example
пример.css-файл:
.css-1wa3eu0-placeholder{
display: none;
}
Я добавил css, потому что, когда ввод был очищен, нежелательное div
появлялось снова, поэтому мне пришлось скрыть div
сквозной css
Это работа, которую я протестировал в своей локальной системе.
Если это не работает, пожалуйста, не волнуйтесь, это только из-за изменения имен классов и идентификаторов, просто проверьте их и замените классы и идентификаторы, если требуется, как я сделал это со ссылкой на ваш пример codesandbox
Редактировать :
Результатом вышеупомянутого кода является:
Комментарии:
1. Как это отвечает на вопрос? Он просто неловко скрывает заполнитель (один раз) через 200 мс. Также он полностью работает вне react, что делает невозможным его повторное использование.
2. я не знаю, почему вы это говорите, но для меня это просто отлично работает в моей локальной системе
3. Что это за «это», которое должно работать? Как заполнитель остается видимым после добавления значения?
4. Я понимаю, что вы делаете. Я просто думаю, что это не так, как следует использовать при использовании react. По сути, вы взламываете детали реализации сторонней библиотеки. Если когда-либо эта библиотека изменит способ отображения выбора, она перестанет работать. Кроме того, учитывая, как есть, его нельзя повторно использовать. Если бы я должен был визуализировать
<Example/>
дважды, это не удалось. Тогда все асинхронные / ожидающие частиsetTimeout
вообще не имеют смысла. Извините, если это звучит резко, но я не думаю, что это хороший ответ на вопрос.5. Учитывая реализацию компонента react-select Select, я не думаю, что есть разумный способ заставить это работать. Это просто недостающая функция компонента. Хотя его перенос и реагирование на изменения значений могут быть отправной точкой. Что касается вашего
setTimeout
вопроса. В вашем коде тайм-аут гарантирует, что у react было время для рендеринга элемента, прежде чем вы попытаетесь получить к нему доступ через dom api.