在React-Native中迭代对象的Rails数组

时间:2019-05-16 10:46:04

标签: ruby-on-rails reactjs react-native

我正在尝试迭代本机应用程序中的对象数组(从ActiveRecord查询中检索)以呈现在表中。

ActiveRecord查询

def list
    render json: Client.select('name, created_at, id').order('created_at DESC')
  end

这就是我从API(反应)中获取数据的方式:

getStatus() {
 fetch(global.api_clients, {
   headers: {
     Accept: 'application/json',
     'Content-Type': 'application/json',
     'Authorization': 'Token token=' + global.token,
   },
 })
  .then((response) => response.json())
  .then((responseJson) => {
    this.setState({
      clients: responseJson
    });
  })
  .catch((error) => {
    console.error(error);
  });
}

查询输出

Array [
  Object {
    "created_at": "2019-05-08T11:33:06.573Z",
    "id": 1,
    "name": "Francesco",
  },
]

渲染

render() {
    const state = this.state;
    const listItems = state.clients.map((link) =>
      <Row data={link.name} textStyle={styles.text}/>
    );

    console.log(this.state.clients);

    return (
      <View style={styles.container}>
        <Table borderStyle={{borderWidth: 2, borderColor: '#c8e1ff'}}>
          <Row data={state.tableHead} style={styles.head} textStyle={styles.text}/>
          {listItems}
        </Table>
      </View>
    )
  }

未定义不是函数(在'... data.map ...'附近)

1 个答案:

答案 0 :(得分:0)

找到了。 行数据中存在错误,因为它假装为数组。 这样解决:

<Row data={[link.name, link.id, link.name]} textStyle={styles.text}/>