Как я могу остановить закрытие компонента выбора при нажатии на один из его элементов (элемент ввода) — react antd

#javascript #reactjs #antd

#javascript #reactjs #antd

Вопрос:

Я использую antd(3.23.4) . У меня есть Select компонент, и я хочу избежать его закрытия при нажатии на один из его параметров (элемент ввода). Однако удалось избежать его закрытия, не могу сосредоточиться на элементе ввода, когда я его щелкнул. Я думаю, это потому, что я обернул его в div и использовал a preventDefault() в div, который немедленно останавливается, когда я нажимаю на элемент ввода. Я искал некоторые проблемы на github antd, но безуспешно. Вот пример моего кода:

             <Select
              dropdownRender={menu => (
                <React.Fragment>
                   {menu}      
                   <div onMouseDown={e => e.preventDefault()}>
                       <Input type="number" key="others" addonBefore="Others: " /> 
                   </div>
                </React.Fragment>
                                        
                  )} >
                    <Option key="bar" value="bar">
                        bar
                    </Option>
                </Select>
 

Проблема здесь в том, что я не могу щелкнуть / сфокусировать ввод. Чтобы я мог печатать в нем.

Нужна помощь. Пожалуйста, сообщите. Заранее благодарю вас за тех, кто ответит 🙂

Комментарии:

1. вы пытаетесь использовать multiselect?

2. Привет, ДИЛИП, я не пытаюсь использовать multiselect.

3. Итак, одиночный выбор, но меню должно быть постоянным, не является

4. да, меню должно быть постоянным. Поэтому, если мне не нужна эта bar опция, я могу ввести в элемент ввода то значение, которое я хочу.

5. Тогда в этом случае меню всегда будет открыто, и при этом условии оно будет закрыто

Ответ №1:

У нас есть size="" атрибут в select component (тег) в html Select Attributes. Это гарантирует, что количество опций внутри поля выбора отображается одновременно, поэтому вы можете сделать это следующим образом….

 <select
            id="select"
            name="catagory"
            onChange={(e) => handleChange(e)}
            onClick={() => addSize()}
          >
            *.....Your Options....*
</select>



const addSize = () => {
  const selectBox = document.getElementById("select");
  selectBox.addEventListener("click", selectBox.setAttribute("size", 10));
};
 

Комментарии:

1. спасибо за ответ на Yog. Я думаю, что размер здесь не проблема? Поскольку я правильно его отрисовал. моя проблема здесь в том, что я не могу щелкнуть элемент ввода в компоненте выбора.