javascript - 在 React JS 组件中显示数组

标签 javascript arrays reactjs components

我对 ReactJS 还很陌生,希望有人能帮助我。

我从 API 获取一个 JSON 对象,并希望在我的组件中显示一些信息。

该对象看起来有点像这样:

{
  name: Tom,
  types: [
          {
            slot: 1,
            type: {url: xyz, name: TomsURL}
          },
          {
           slot: 2,
           type: {url: zyz, name: OtherName
          }
  ],
  ...
}

现在我想显示我的组件中的一些数据。 组件“Body”包含请求方法,并通过 props 将获取的数据发送到布局组件

export default class Body extends Component {
constructor(){
    super();
    this.state = {
        person: ""
    }
}

handleSubmit(e){
    getRequest.fetchData()
    .then(function(response){
        if(response.status === 404){
            alert("Unbekannter Name");
        }else{
            this.setState(function(){
                return {
                    person: response.data
                }
            })    
        }
    }.bind(this));
}

render() {
    return ( 
        <div>
            <Form handleSubmit={this.handleSubmit.bind(this)}/>
            <Layout person={this.state.person}/>
        </div>
    );
}
}

这是我想要显示数据的布局组件:

export default class Layout extends Component {

render() {
    var person= this.props.person
    return ( 
        <div>
            <ul>
                <li>{person.name}</li>
                <li>{person.types[0].type.name}</li>

            </ul>
        </div>
    );
}
}

如果我尝试启动应用程序,我会收到错误无法读取未定义的属性“0”

我认为这是因为在我通过单击按钮请求数据之前该组件中没有数据可显示。在按下按钮之前,我只想显示没有数据的应用程序,然后它应该更新

最佳答案

人是一个对象,对吗?如果是这种情况,您应该在构造函数中将其设置为空对象(而不是字符串)以保持一致。

constructor(){
    super();
    this.state = {
        person: {}
    }
}

现在,为了仅在信息可用时显示信息并将其保留为空白,您需要做的是检查具有信息的 person 属性(也称为不是空对象)。

export default class Layout extends Component {

render() {
    var person = this.props.person
    if (Object.values(person).length !== 0) {
      return ( 
        <div>
            <ul>
                <li>{person.name}</li>
                <li>{person.types[0].type.name}</li>

            </ul>
        </div>
      );
    }
    return null;    
 }
}

关于javascript - 在 React JS 组件中显示数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645628/

相关文章:

datepicker - 没有初始值的react-datepicker

javascript - 我如何在 FieldArray 之外使用 formik "arrayHelper"?

php - 允许带有警报的弹出窗口

javascript - 隐藏 'Dropdown' 选择

java - RESTful 服务 : Unable to return array of object using json

c - 将字符分配给 char[x] 会导致段错误

c - 理解函数原型(prototype)

javascript - 每次图像完成加载时运行一个函数

javascript - 在 pentaho javascript 步骤中将值设置为数组

html - 悬停时制作 React Bootstrap NavDropdown 下拉菜单