从 Webpacker 获取 API 不与 Rails + React 一起工作
Fetch API not working with Rails + React from Webpacker
如何开始工作 Fetch API with Rails and React.
设置:Rails 5,来自 Webpacker 的 Sprockets 和 React。
我在这里想要实现的是使用 Fetch API 来获取数据并将其加载到 ReactBootstrapTable API.
import React from 'react';
import {BootstrapTable, TableHeaderColumn} from 'react-bootstrap-table';
import 'whatwg-fetch'
class ExampleTable extends React.Component {
constructor() {
super();
this.state = {
datatable: [], // I'm not sure if I can use array to json data.
};
}
// I'm new to React, so I'm not sure if I'm passing props right
componentDidMount() {
console.log('start componentDidMount');
fetch('https://www.test.com/test.json')
.then(function(response) {
return response.json();
}).then(function(response) {
let datatable = response;
this.setStates({ datatable });
}).catch(function(ex) {
console.log('parsing failed', ex);
});
}
render() {
return (
<div>
<BootstrapTable
data={this.states.datatable} //Here, I'm passing data to the table
pagination
striped hover condensed
options={ { noDataText: 'Empty Table' } }>
<TableHeaderColumn isKey dataField='id' width='80px' dataAlign='center'>
ID
</TableHeaderColumn>
<TableHeaderColumn dataField='test'width='300px' dataAlign='left'>
Test
</TableHeaderColumn>
</BootstrapTable>
</div>
);
}
}
export default ExampleTable;
这里的主要问题是我无法使用 Fetch API 而且我也不完全确定我将数据传递给 table 的方式(基本上是如何使用反应)
我正在从我的 IDE
中得到一个 error/warning
fetch is not defined
还有来自 Firefox 控制台的另一条错误消息:
The above error occurred in the component: in ExampleTable
TypeError: this.states is undefined
我通过 yarn 安装了 Fetch API 并检查了 node_modules/whatwg-fetch 文件夹。正如 github API 中所述,我导入了 'whatwg-fetch',如上面的代码所示。
我不知道我还应该做什么。我以同样的方式安装了 ReactBoostrapTable 并且成功了。其他一切正常。
我查看了与 webpack 一起使用的 fetch installation instructions,它说要将此添加到您的 webpack 配置中:
entry: ['whatwg-fetch', ...]
此外,您提到了另一个错误 TypeError: this.states is undefined
。看起来你有错字。在 React 中,如果你试图引用状态,你可以像这样使用它:
this.state.datatable
在你的render
方法中,你指的是this.states
。
此外,当您使用 fetch 进行调用时,您正在尝试调用 this.setStates
。您应该像这样使用它:
this.setState({ somestate: "xyz"})
如何开始工作 Fetch API with Rails and React.
设置:Rails 5,来自 Webpacker 的 Sprockets 和 React。
我在这里想要实现的是使用 Fetch API 来获取数据并将其加载到 ReactBootstrapTable API.
import React from 'react';
import {BootstrapTable, TableHeaderColumn} from 'react-bootstrap-table';
import 'whatwg-fetch'
class ExampleTable extends React.Component {
constructor() {
super();
this.state = {
datatable: [], // I'm not sure if I can use array to json data.
};
}
// I'm new to React, so I'm not sure if I'm passing props right
componentDidMount() {
console.log('start componentDidMount');
fetch('https://www.test.com/test.json')
.then(function(response) {
return response.json();
}).then(function(response) {
let datatable = response;
this.setStates({ datatable });
}).catch(function(ex) {
console.log('parsing failed', ex);
});
}
render() {
return (
<div>
<BootstrapTable
data={this.states.datatable} //Here, I'm passing data to the table
pagination
striped hover condensed
options={ { noDataText: 'Empty Table' } }>
<TableHeaderColumn isKey dataField='id' width='80px' dataAlign='center'>
ID
</TableHeaderColumn>
<TableHeaderColumn dataField='test'width='300px' dataAlign='left'>
Test
</TableHeaderColumn>
</BootstrapTable>
</div>
);
}
}
export default ExampleTable;
这里的主要问题是我无法使用 Fetch API 而且我也不完全确定我将数据传递给 table 的方式(基本上是如何使用反应)
我正在从我的 IDE
中得到一个 error/warningfetch is not defined
还有来自 Firefox 控制台的另一条错误消息:
The above error occurred in the component: in ExampleTable
TypeError: this.states is undefined
我通过 yarn 安装了 Fetch API 并检查了 node_modules/whatwg-fetch 文件夹。正如 github API 中所述,我导入了 'whatwg-fetch',如上面的代码所示。
我不知道我还应该做什么。我以同样的方式安装了 ReactBoostrapTable 并且成功了。其他一切正常。
我查看了与 webpack 一起使用的 fetch installation instructions,它说要将此添加到您的 webpack 配置中:
entry: ['whatwg-fetch', ...]
此外,您提到了另一个错误 TypeError: this.states is undefined
。看起来你有错字。在 React 中,如果你试图引用状态,你可以像这样使用它:
this.state.datatable
在你的render
方法中,你指的是this.states
。
此外,当您使用 fetch 进行调用时,您正在尝试调用 this.setStates
。您应该像这样使用它:
this.setState({ somestate: "xyz"})