Используя Fetch API для реакции, это не обновляет пользовательский интерфейс после выполнения обещания.
Мы реализуем обещание, когда касаемся экрана (да, и обновляем пользовательский интерфейс с правильными данными).
В качестве обходного пути мы используем axios (https://github.com/mzabriskie/axios), и он решает нашу проблема.
Вот код:
продукт-service.js
export class ProductsService {
constructor() {
}
getProductDetail(id) {
let url = 'http://myservice/product-detail/' + id;
return fetch(url)
.then((response) => response.json());
}
}
мой-component.js
export class MyComponent extends Component {
constructor(props) {
super(props);
this.state = {
product: {}
};
}
componentDidMount() {
let productService = new ProductsService();
productService.getProductDetail(1)
.then((productDetail) => {
console.log('updateProduct: ', productDetail);
this.setState({
product: productDetail
});
})
.catch((error) => {
console.error(error);
});
}
render() {
return (
<View>
<Text>{this.state.product.name}</Text>
</View>
);
}
}
Когда мы используем выборку, название продукта появляется, только если мы касаемся экрана устройства. Когда мы используем axios, это работает.
Это ошибка?
Среда: Windows 10, Android 6, React Native 0.31