javascript - 无法从 ReactJS 中的数组获取下拉列表

标签 javascript reactjs typescript

我想在 ReactJS 中的自动完成文本字段中显示城市名称数组。

我能够打印我需要的数组,但是我无法在浏览器的下拉列表中获取列表。

此外,我在浏览器中收到以下错误。

我尝试了不同的方法来检索数据,但未能成功。

retrieveDataAsynchronously(searchText) {
  let _this = this;

  fetch(`http://webapi.myserver.com/api/v3/locations?name=${searchText}`)
    .then(r => r.json())
    .then(json => {
      var cityNames = json.Data.map(current => current.City);
      _this.setState({
        autocompleteData: cityNames
      });
    });  
}  

const json.Data = [
  {
    "Name": "Dale (e)",
    "City": "Dale (e)",
    "StateAbbreviation": "IN",
    "StateName": "Indiana",
    "StateCode": 26,
    "ZipCode": "47523"
  },
  {
   "Name": "Dallas",
   "City": "Dallas",
   "StateAbbreviation": "TX",
   "StateName": "Texas",
   "StateCode": 68,
   "ZipCode": "75202",
  }
];

预期结果是在“自动完成”字段中以下拉列表的形式获取这些城市名称。

我在 brwoser 中看到错误。

未处理的拒绝(TypeError):json.Data.map 不是函数

最佳答案

语法错误

在声明 const json 时确实出现语法错误使用const json.Data .

const json.Data = [
      ^^^^

SyntaxError: Missing initializer in const declaration
    at Module._compile (internal/modules/cjs/loader.js:718:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
    at Module.load (internal/modules/cjs/loader.js:641:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:837:10)
    at internal/main/run_main_module.js:17:11

尝试用以下内容替换:

const json = {
    Data: [
        {
            "Name":"Dale (e)",
            "City":"Dale (e)",
            "StateAbbreviation":"IN",
            "StateName":"Indiana",
            "StateCode":26,
            "ZipCode":"47523"
        },
        {
            "Name":"Dallas",
            "City":"Dallas",
            "StateAbbreviation":"TX",
            "StateName":"Texas",
            "StateCode":68,
            "ZipCode":"75202",
        }
    ]
};

获取名为 json 的响应覆盖您的 json 对象

我看到的第二个问题是json.Data将引用您的提取请求返回,也名为 json ,其中可能不包含 json.Data大批。您将需要重命名 const json,或重命名响应 avoir 名称冲突的 fetch。

fetch(`http://webapi.myserver.com/api/v3/locations?name=${searchText}`)
    .then(r => r.json())
    .then(response_json => {
      var cityNames = json.Data.map(current => current.City);
      _this.setState({
        autocompleteData: cityNames
      });
    });  

关于javascript - 无法从 ReactJS 中的数组获取下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677049/

相关文章:

javascript - 如果与大小写不匹配,则搜索不会返回数组元素

javascript - 为什么 React Native 不提供 self 辩护

javascript - 获取 td(行)的父级 + 悬停效果

javascript - 我应该在我的 React 应用程序中的什么地方调用 Google map 方法?

node.js - 多公共(public)模块中的错误未找到 : Error: Cannot resolve module 'react-router' in/path-to-project/app-name @ multi common

javascript - 限制 Object.fromEntries 的推断类型

javascript - jQuery:如何检查内容是否有任何 URL

php - 最好的 PHP 编程方法?

reactjs - 尝试在 React Native 中注册两个同名的 View RTCVideoView

typescript - 元素隐式具有 'any' 类型