React Fetch不显示嵌套对象的值

时间:2019-11-24 09:14:41

标签: reactjs

我从雀巢对象获取价值时遇到问题。我想从studySets中获取值名称(这是对象用户中的嵌套对象)。该程序知道它是一个对象,但无法显示值(显示两个点,因为在数据库中,它是两个用户对象)。我在响应中添加了屏幕截图。请告诉我问题出在哪里。

Screen with response

  

WordSet.js

export class WordSet extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      users: [],
    };
  }

  componentDidMount() {
    fetch(URL)
      .then((response) => response.json())
      .then((json) => {
        this.setState({ users: json });
      });
  }

  render() {
    const { users } = this.state;
    return (
      <div>
        <ul>
          {users.map((user) => (
            <li key={user.id}>{user.studySets.name}</li>
          ))}
        </ul>
      </div>
    );
  }
}

export default WordSet;

1 个答案:

答案 0 :(得分:0)

好吧,基本上,您将studySets视为对象,而是一个数组。因此,或者您也必须遍历studySets数组,或者如果您始终想要第一个用户的数据,然后执行我在评论中提到的类似操作:

func ParseStruct(t reflect.Type, tag string) {
    if t.Kind() == reflect.Ptr {
        t = t.Elm()
    }
    if t.Kind() != reflect.Struct {
        return
    }

    for i := 0; i < t.NumField(); i++ {
        f := t.Field(i)
        value := f.Tag.Get(tag)
        ft := t.Type
        if ft.Kind() == reflect.Ptr {
            ft = ft.Elem()
        }

        // It seems that you don't want a tag from an struct field; only other fields' tags are needed
        if ft.Kind() != reflect.Struct {
            if len(value) != 0 {
                fmt.Println(value)
            }
            continue
        }

        ParseStruct(ft,tag)
    }
}

{user.studySets[0].name}