javascript - 在React中循环父对象内的对象

标签 javascript reactjs react-native ecmascript-6 jsx

我真的被这个问题困扰了,它看起来很简单,但我只是无法访问父对象的子对象,请有人帮忙。下图是控制台日志:

db

当我渲染它时,我看不到结果

const listItems = this.state.list.map((item, index) => <p>{item.title}</p>);

当然,当我尝试this.state.list.map((item, index) => <p>{item}</p>);时我收到以下错误:

Objects are not valid as a React child

主要功能:

componentDidMount = () => {
    fire
        .database()
        .ref(`/feed/`)
        .on('value', snapshot => {
            var obj = snapshot.val();
            var list = [];
            for (let a in obj) {
                list.push(obj[a]);
            }
            console.log(list);
            this.setState({
                list: list,
                loading: false
            });
        });
};

可以在此处找到实时 session (Home.js) https://codesandbox.io/live/DR7WzY

编辑:我最后的尝试

        for (let a in obj) {
            for (let b in obj[a]) {
                console.log(b);
            }
        }

但是它是空的!!

最佳答案

item.title 之所以有效,是因为它是一个字符串。你不能传递一个对象,如果你想查看该对象,那么你可以将它字符串化:

this.state.list.map((item, index) => <p>{JSON.stringify(item)}</p>);

由于您有嵌套对象,因此您需要执行以下操作:

this.state.list.map((item, index) =>
  Object.values(item).map(nestedItem => 
    <p>{JSON.stringify(nestedItem)}</p>));

关于javascript - 在React中循环父对象内的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730617/

相关文章:

javascript - 如何在执行 event.preventDefault() 后重新启用默认值

javascript - AngularJS - 引导日期选择器

javascript - React Native FlatList的scrollToEnd()不起作用

reactjs - AWS Amplify - React Authenticator 组件不可见

ios - IOS模拟器可以画中画吗?

react-native - 使用 react-navigation 单击每个选项卡时如何显示初始路线

javascript - Vue Router 中的语言作为参数

javascript - 如何让用户连续滚动列表?

reactjs - 如何在 react Electron 应用程序中使用 cookie?

react-native - 如何防止 native react 中的屏幕 sleep