如果使用者認為適合的選擇不在「選擇」選項中顯示的選項中,我想讓使用者能夠新增自訂文字。我已經成功創建了自定義文字字段,但是獲取用戶輸入並將其設置為選擇組件的值變得很痛苦(聽起來很容易做到,但由於某種原因它不工作) 這是我的實作
const [selectedpurpose, setSelectedPurpose] = useState<string>("");// selected value of the select component const [customOption, setCustomOption] = useState<string>("");//custom userinput const [dropoptions, setDropOptions] = useState([ { value: "General Meeting", label: "General Meeting" }, { value: "Consultation Meeting", label: "Consultation Meeting" }, { value: "AdCampaign Meeting", label: "Ad Campaign Meeting" }, { value: "Marketing Meeting", label: "Marketing Meeting" }, ]);//select options // function to recored custom user input const handleAddOption = () => { if (customOption) { const newOption = { value: customOption, label: customOption }; setDropOptions([newOption, ...dropoptions]); setSelectedPurpose(customOption); setCustomOption(""); } }; //my form <Form.Item name="purpose" label="Purpose of Visit" rules={[ { required: true, message: "Please select Purpose of Visit!", }, ]} > <Select defaultActiveFirstOption={false} value={selectedpurpose} onChange={(e) => { if (customOption) { setSelectedPurpose(customOption); }else{ setSelectedPurpose(e) } }} dropdownRender={(menu) => ( <div> {menu} <div style={{ display: "flex", flexWrap: "nowrap", padding: 8, }} > <Input style={{ flex: "auto" }} maxLength={20} value={customOption} onChange={(e) => { if (e.target.value.length > 20) { // if user has reached the maximum length // show a message or change the color of the input to indicate the limit has been reached // for example: openNotificationWithIcon( "error", "Warning", "Maximum length reached!" ); } else { setCustomOption(e.target.value); } }} onKeyDown={(e) => { if (e.key === "Enter") { handleAddOption(); } }} /> <Button type="link" onClick={handleAddOption} style={{ flex: "none", padding: "0px 4px" }} > Add </Button> </div> </div> )} > {dropoptions.map((option) => ( <Option key={option.value} value={option.value}> {option.label} </Option> ))} </Select> </Form.Item>
我做錯了什麼,根據我的程式碼,點擊新增按鈕按鈕並按Enter 鍵應該將新值新增到選項陣列中,並選擇使用者輸入作為選擇元件的值,但到目前為止它只會將其新增至選項數組並忽略將其設為選擇值 感謝任何幫助
雷雷