本地反应

时间:2016-04-26 19:56:06

标签: javascript ios reactjs firebase react-native

我正在尝试使用Firebase中的数据在我的react-native应用中填充Listview,目前我遇到此错误:

"对象无效作为React子对象(找到具有键{title}的对象)。如果您要渲染子集合,请使用数组,或使用React插件中的createFragment(object)包装对象。检查'文本的渲染方法。'"

这是在我调用clonewithrows时发生的。目前我对此功能的输入(在解析对Firebase的响应之后)是:[{title:'纽约' },{标题:'波士顿' }]

这是我的相关代码;如果您发现可能导致问题的任何问题,请告诉我。

const huntsRef = new Firebase(`${ config.FIREBASE_ROOT }/hunts`)


class Home extends Component {
    constructor(props) {
        super(props);
        var conDataSource = new ListView.DataSource(
            {rowHasChanged: (r1, r2) => r1.guid != r2.guid});

        this.state = {
            dataSource: conDataSource
        };
    }

    listenForItems(huntsRef) {

        huntsRef.on('value', (snap) => {
            var hunts = [];
            snap.forEach((child) => {
                hunts.push({
                    title: child.val().title
                });
            });

            this.setState({
                dataSource: this.state.dataSource.cloneWithRows(hunts)
            });
            console.log('datasource' + this.state.dataSource);
        });
    }

    componentDidMount() {
        this.listenForItems(huntsRef);
    }

    renderRow(rowData, sectionID, rowID) {
        console.log("ROWDATA" + rowData);
    }

    render() {

      return (
        <ListView
          dataSource={this.state.dataSource}
          renderRow={(rowData) => <Text>{rowData}</Text>}
        />
      );
    }
}

module.exports = Home;

1 个答案:

答案 0 :(得分:1)

如消息所示,rowData是javascript对象,无法呈现。您可以将rowData字符串化。例如:

<ListView
  dataSource={this.state.dataSource}
  renderRow={(rowData) => <Text>{JSON.stringify(rowData)}</Text>}
/>