Могу ли я поместить ajax в конструктор компонента React?
class AjaxInConstructor extends React.Component{
constructor() {
super();
this.state = {name: '', age: ''}
this.loadData().then(data => {
this.setState(data);
});
}
loadData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({
name: '我去去去去nimabi',
age: 123
});
}, 2000);
});
}
render() {
const {name, age} = this.state;
return <div>
<p>Can I init component state async?</p>
<p>name: {name}</p>
<p>age: {age}</p>
</div>
}
}
ReactDOM.render(
<AjaxInConstructor/>,
document.body
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
Выше мой демонстрационный код. Я знаю, что люди всегда ставят ajax в componentDidMount
или componentWillMount
жизненном цикле.
Но этот случай также работает.
In chrome console
, React
не допускать ошибок и деформирования. Итак, мой вопрос - использование, как это совершенно правильно? Есть ли какая-то ошибка?
Theres no AJAX здесь и то, что вы сделали, кажется прекрасным – Martin
Если ваш компонент передан другому компоненту, но отображается только в том случае, если выполнено конкретное условие, вызов AJAX будет всегда запускаться, даже если компонент не будет установлен/отображен так, что 'componentDidMount' или 'componentWillMount' лучше подходят. – HiDeo
Также это не удобный способ, но ответ на ваш вопрос - это да, вы можете. – degr