// conatnsts.js
export const URI = 'http://localhost:1337/';
export const URL = 'http://localhost:1337';
export const POST_TYPE = 'fragrances';
// App.js
import React, { Component } from 'react';
import axios from 'axios';
import { URI, URL, POST_TYPE } from './constants.js';
class App extends Component {
state = {
fragrances: [],
};
componentDidMount() {
axios
.get(`${URI + post_type}`)
.then(response => {
const fragrances = response.data;
this.setState({ fragrances });
})
.catch(error => {
console.log('An error occurred:', error);
});
}
render() {
const { fragrances } = this.state;
return (
<>
<div className="row">
{
fragrances.map(({ Image: image, Name: name, Category: category, Description: desc}, index) => (
<div key={index} className="col-sm-6 col-xs-12">
<div className="fragrance">
{image ? <img className="fragrance__image" src={URL + image.url} alt={name} /> : <h4>Geen foto beschikbaar.</h4>}
{name ? <h2 className="fragrance__title">{name}</h2> : 'Geen titel aanwezig.'}
{category ? <span class="fragrance__category">{category}</span> : ' '}
{desc ? <p className="fragrance__description">{desc}</p> : 'Geen omschrijving aanwezig.'}
</div>
</div>)
)
}
</div>
</>
)
}
}
export default App;
Я добавил небольшие изменения, но чтобы ваш код был чистым и более читаемым в компоненте записи React только для той цели, для которой он должен служить.Ваш компонент не должен думать о том, как визуализировать изображение, категорию или описание.Вместо этого вы должны иметь что-то вроде FragranceListItem
.Этот компонент (компонент приложения) является FragranceList
.Таким образом, ваш FragranceList
компонент отображает FragranceListItem
s.В FragranceListItem
вы можете иметь компоненты FragranceImage
, FragranceName
, FragranceCategory
, FragranceDescription
, которые будут получать необходимую информацию от props
, и они решат, как показать свои данные, если условие истинно или нет,Подумайте о компонентах, таких как функции.Функция должна быть простой, она должна делать только одно, один и тот же компонент React.
А как быть с извлечением данных и переводом их в состояние.Если это небольшие приложения, то это работает.Но если он станет больше, появится необходимость в таких библиотеках, как redux
, react-redux
, redux-thunks
, redux-sagas
.У этих библиотек есть свои подходы к тому, как поддерживать состояние вашего приложения, как выполнять вызовы на стороне сервера из отдельных модулей и удерживать побочные эффекты вдали от ваших компонентов.