2017-08-17 164 views
0

嘗試用來自提取請求的解析數據填充數據列表,但不添加選項。我很確定我的問題是頁面沒有及時呈現元素,但不確定如何解決這個問題。任何想法,將不勝感激。通過提取填充數據列表

fetch(url, { 
      method: 'GET', 
     }).then(function (json) { 
      for (var i = 0; i< json.length; i++) { 
       var option = "<option value="+json[i]+'" >'+json[i]+'</option>'; 
       dataList.appendChild(option);  
       console.log(option);   
      } 

      console.log(document.getElementById("datalist")); //returns null 


return (
     <div> 
      <input type="text" id="fetchList" placeholder="Select one..." list="datalist" /> 
      <datalist id="datalist"></datalist> 
     </div> 

    ) 
} 

回答

0

你在正確的軌道上。 fetch()是異步的,因此您的console.log(...)將在fetch()收到並處理響應之前執行。

然而,你可以不喜歡下面的返回一旦數據已經接到單子:

return (
     ... 
     { dataList.length > 0 
      ? <datalist id="datalist"> 
       { dataList.map((option) => 
       { option } 
      ) } 
      </datalist> 
      : 'Receiving data...' 
     } 
    ) 

更新:我只的實際值可能追加到數組和傳播使用

列表
<option value={option.value}>{option.name}</option> 
+0

感謝您的回覆。我已經按照您在這裏所建議的更新了它,但是,在獲取數據後,該列表仍然沒有填充。依然在「正在接收數據...」。 – user7674254

+0

我想通了。這是我需要修復的頁面刷新的一個單獨問題。點擊不同的頁面並返回到這個頁面,填充下拉菜單。公認!感謝您的建議。 – user7674254