简体   繁体   English

如何使用 promise 动态填充下拉选项

[英]How to populate dropdown options dynamically using a promise

import { getCustomer } from './Customers';
let optionItems=[];

export const LOV: React.FunctionComponent = () => {
  const loadCustomer = async () => {
  const data = await getCustomer();
  for (var i=0; i < data.value.length ; ++i)
  {
   optionItems.push({
    key: data.value[i].CustomerId,
    text: data.value[i].CustomerName
  });
 }
}
useEffect(() => {
 loadCustomer();
}, [])

return (
  <SearchableDropdown options={optionItems}/>    
);};

Code in Customers.tsx Customers.tsx 中的代码

export const getCustomer = async (): Promise<any> => {
const response = await 
$.ajax({
    url: apiURL,
    type: "GET",
    headers: headers,
    data: null,
    cache: false,
    beforeSend: function (request) {
      request.setRequestHeader("Authorization", 'Bearer ' + accessToken); 
    }
})
.done( function (data) {
    return data;
})
.fail(function (jqXHR) {
    if (jqXHR.status == 401) {
        promptAuth(jqXHR.getResponseHeader("WWW-Authenticate"));
    } 
    else {
        console.log("NOT 401");
    }
});  
return response;
}

I'm trying to populate a dropdown dynamically using a promise.我正在尝试使用 promise 动态填充下拉列表。 I'm using Fluent-react Dropdown.我正在使用 Fluent-react Dropdown。 getCustomer() loads values to const data. getCustomer() 将值加载到 const 数据。 However, I can't see any values in the dropdown even though data is not null.但是,即使数据不是 null,我也看不到下拉列表中的任何值。 Please help.请帮忙。

Fluent Dropdown => https://developer.microsoft.com/en-us/fluentui#/controls/web/dropdown流畅的下拉菜单 => https://developer.microsoft.com/en-us/fluentui#/controls/web/dropdown

Your optionsItems need to be reactive.您的optionsItems需要是被动的。 Try using useState -hook尝试使用useState -hook

export const LOV: React.FunctionComponent = () => {
  const [optionItems, setOptionItems] = useState([]);
  const loadCustomer = async () => {
  const data = await getCustomer();
  const options = [];
  for (var i=0; i < data.value.length ; ++i)
  {
   options.push({
    key: data.value[i].CustomerId,
    text: data.value[i].CustomerName
  });
 }
 setOptionItems(options)
}
useEffect(() => {
 loadCustomer();
}, [])

return (
  <SearchableDropdown options={optionItems}/>    
);};

Please make sure your data.value[i].CustomerId and data.value[i].CustomerName are valid strings.请确保您的data.value[i].CustomerIddata.value[i].CustomerName是有效的字符串。 You need to supply string, but it looks like your API call returns null there.您需要提供字符串,但看起来您的 API 调用在那里返回 null 。 After you fix this problem, together with Stutje's solution your app should start to work.解决此问题后,与 Stutje 的解决方案一起,您的应用程序应该开始工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何基于另一个下拉选择动态填充的下拉列表中选择? - How to dynamically populate options on dropdown lists based on selection in another dropdown? 使用javascript在多选下拉列表中动态填充所选选项 - populate selected options dynamically in multiselect dropdown using javascript 使用JavaScript从PHP数组中填充带有选项的动态创建的下拉列表 - Populate Dynamically Created Dropdown with Options from PHP array using javascript 如何使用其他下拉菜单中未选择的选项填充下拉菜单? - How to populate a dropdown using unselected options from other dropdowns? 在运行时选择下拉列表时动态地填充Angular Populate下拉选项 - Angular Populate dropdown options dynamically while selecting dropdown in runtime 如何在使用JavaScript和Coldfusion的情况下填充动态创建的下拉框 - How to populate a dynamically created dropdown box in a using javascript and coldfusion 如何在选择下拉列表中填充选项值 - How to populate the options value in select dropdown 使用JSON数据动态填充下拉列表 - Populate dropdown dynamically using JSON data 使用jQuery动态填充下拉列表 - Populate dropdown list dynamically using jquery 如何动态填充javascript函数的选项 - How to Dynamically populate options for javascript function
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM