Есть компонент, в при загрузке страницы в его методе componentDidMount
я делаю get-запрос на сервер:
componentDidMount: function () {
$.ajax({
type: 'GET',
url: '/adress',
data: data_storage,
success: function (data_storage) {
this.setState({data_storage: data_storage});
}.bind(this),
beforeSend: function () {
this.setState({loading: true});
}.bind(this)
});
},
Данные принимаю и устанавливаю их в state
сразу. Далее они мне понадобятся для формирования компонента(это происходит с помощью методов на ходу и зависит от полученных данных). Вот тут и проблема, что при первом рендере data_storage
является undefined и метод, который работает с этим параметром отваливается.НО если я уберу метод, то в консоль логе вижу,что компонент рендерится несколько раз-первый без data_storage
, а второй с ним. В чем моя ошибка? Как мне это дело прописать так, чтобы он при первом рендере уже имел информацию и не ругался?
Добавил краткий пример работающего кода с ожиданием данных.
class Application extends React.Component {
constructor (props) {
super(props);
this.state = {
myData: undefined
}
}
componentDidMount () {
setTimeout(function () {
this.setState({
myData: {
param1: 'param1',
param2: 'param2',
param3: 'param3',
}
})
}.bind(this), 4000);
}
render () {
if (!this.state.myData) {
return <div>NO DATA</div>
}
return <div>
Test application
</div>
}
}
ReactDOM.render(<Application />, window.root)
Проверить работу можно тут
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
як зробити активною категорію коли ми зайшли в товар даної категорії
Есть массив: [{ continent: 'Europa', country: 'Russia', region: 'Moskovska obl' }, { continent: 'Europa', country: 'Russia', region: 'Tumenskaya obl' }, { continent: 'North America', country: 'USA', region:...
Какую базу данных лучше всего использовать для chrome extensions и возможно ли вообще это? Я хочу сделать базу данных слов и выбирать потом их по части...