исследую возможности реакт. redux не использую по незнанию и отсутствию времени. Задача такова. Есть две формы select, первая "курс", вторая "тема" Поначалу форма темы скрыта и пустая, а в форму курса приходит значение от сервера при загрузке. На форму курса повешено событие, которое делает запрос к бд. Сутью запроса является, выбрать все темы выбранного курса и соответственно после этого необходимо от рисовать форму темы. Проблема я полагаю в том, что даже если задать метод, который будет менять состояние, то возникает проблема, рендер то синхронный, а данные приходят из асинхронного обещания. В общем у меня рендерит пустоту. Я отлично понимаю, что делаю кучу костылей и подобные задачи хорошо бы возложить на механизм redux, но хочу узнать хотя бы концептуально, как это сделать на чистом React
Асинхронные запросы без redux вплоне имеют себе место на жизнь вместе c React: демо и вот его код.
Но Вы правильно поняли что это не совсем тот путь которым надо идти. В большом проекте Вам будет сложно манипулировать состояниями и событиями, лучше возложить это на Redux.
Возможно глянув в код вам станет более понятна логика работы с БД внутри компонента
import React, { Component } from 'react'
export default class ThemesList extends Component {
constructor() {
super()
this.state = {
themes: [],
isLoading: true
}
}
async componentDidMount() {
this.setState({
themes: await getThemes(), // где getThemes это ваша функция для получения данных из БД (в этом примере я предполагаю что она возвращает массив тем)
isLoading: false
})
}
render() {
const { isLoading, themes } = this.state
if (isLoading) return <div>Loader...</div>
return(
<ul>
{themes.map(theme => <li key={theme.id}>{theme.name}</li>)}
</ul>
)
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я хочу создать на фоне треугольник с изображениями, путем соединения 4-х треугольников, например:
Столкнулся с проблемой, не могу добраться до внутренних данных iframe, через метод jquerycontents()не получается, я так понимаю потому что на момент...
Помогите разобратьсяИмеется IE 11, который как я понимаю использует ECMAScipt2015, в котором НЕТ поддержки exponentiation (**) operator