javascript - 如何定位通过 axios.get 请求发出的数组中的元素?

标签 javascript reactjs axios

我正在尝试创建一个标签来显示随时间变化的状态。我有一个包含所有状态的数据库,只需创建一个输出状态的 react 组件即可。我只需要输出一个,我尝试通过定位数组中的特定部分来做到这一点,但它给了我以下错误:

Cannot read property 'name' of undefined

class App extends React.Component {
  state = {
    drought_status: [],
    drought_id: 0
  };

  componentDidMount() {
    axios.get("https://jsonplaceholder.typicode.com/users").then(res => {
      console.log(res);

      this.setState({ drought_status: res.data });
    });
  }

  render() {
    return (
      <div>
        <UncontrolledDropdown>
          <DropdownToggle caret>Dropdown</DropdownToggle>

          <DropdownMenu>
            <DropdownItem>{this.state.drought_status[0].name}</DropdownItem>
          </DropdownMenu>
        </UncontrolledDropdown>
      </div>
    );
  }
}

最佳答案

在您的请求完成之前,您的 drought_status 数组为空,因此 this.state.drought_status[0] 将为未定义,并尝试访问 name 将会导致您的错误。

在尝试访问 name 之前,您可以检查 this.state.drought_status[0] 是否已设置。

示例

render() {
  const firstDroughtStatus = this.state.drought_status[0];

  return (
    <div>
      <UncontrolledDropdown>
        <DropdownToggle caret>Dropdown</DropdownToggle>
        <DropdownMenu>
          {firstDroughtStatus ? (
            <DropdownItem>{firstDroughtStatus.name}</DropdownItem>
          ) : null}
        </DropdownMenu>
      </UncontrolledDropdown>
    </div>
  );
}

关于javascript - 如何定位通过 axios.get 请求发出的数组中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505641/

相关文章:

javascript - 自定义 Angular 指令、控制台日志、DOM 更新、屏幕不

javascript - 如何呈现包含打开但未关闭标签的组件? react .js

javascript - React JS : Filtering an array of objects by another array of objects. 如何顺序执行四个函数,包括。多次 API 调用

reactjs - 无提示更新错误帧窗口在刷新 token 上超时

javascript - axios put 请求问题

javascript - Cropper.js - 第一个参数是必需的,并且必须是 <img> 或 <canvas> 元素

javascript - 正则表达式不捕获方括号

javascript - 模板文字在 JavaScript 中无法正常工作

javascript - 如何循环/使用await axios?

javascript - 重定向以使用 vue 和 mongodb 创建帖子