【发布时间】:2019-05-07 04:07:52
【问题描述】:
我获取的数据有问题。我的 fetch 电话让我没有得到承诺。也就是说我也不知道我的代码是可能的代码还是好的代码。
我有一个过滤栏,用户可以在其中选择两个日期,这意味着我将这些输入字段放在一个表单中,再次不确定是否应该这样做,但这样我现在在我的表单上有一个 onSubmit。这个 onSubmit 接受我的函数 handleSubmit,它调用我的 fetch。
import React, { Component } from 'react';
import { SplitButton, Dropdown, Container } from 'react-bootstrap';
import CarCard from '../components/results/CarCard'
//YYYY-MM-DD
class SearchBar extends Component {
state = {
fromDate: '',
toDate: '',
data: [],
}
handleSubmit = event => {
event.preventDefault();
this.getData()
}
handleChange = event => {
const target = event.target;
const value = target.value;
const name = target.name;
this.setState({ [name]: value });
}
getData = () => {
const { toDate, fromDate } = this.state
var url = 'https://www.fenonline.dk/SYS_Backend/api/car/'
url += fromDate + "/"
url += toDate
const data_promise = fetch(url).then(handleHttpErrors)
data_promise.then(data => this.setState({ data }))
}
render() {
return (
<Container>
<Container style={styles.container} fluid={true} >
<form onSubmit={this.handleSubmit}>
<h5 style={{ color: 'white', }}>Search for your rental here:</h5>
<input type="date" label="test" name='fromDate' onChange={this.handleChange} />
<input type="date" placeholder={this.state.toDate} name='toDate' onChange={this.handleChange} />
<input type='submit' value='search' />
</form>
</Container>
<Container>
{carCardItems(this.state.data) || 'Please wait...'}
</Container>
</Container>
);
}
}
export default SearchBar;
const carCardItems = data => {
const items = data.map(c =>
<CarCard key={c.regno} {...c} />
);
return items;
};
function handleHttpErrors(res) {
if (!res.ok) {
return Promise.reject({ status: res.status, fullError: res.json() })
}
return res.json();
}
【问题讨论】: