MySQLデータからデータをロードしてコンポーネントにレンダリングしようとしましたが、AJAXを使用しているので、データロードが完了する前にReactコンポーネントがロードされていました。 。MySQLローをロードした後に負荷反応コンポーネントをロードする[ReactJS]
通常、この状況を処理するためにsetTimeoutが使用されていますが、Reactコンポーネント全体をすべてのデータがロードされるまで待機させることができますか?ここで
は私のコードのサンプルです、私はそれが役に立てば幸い:Tree.js
import React, { Component } from 'react';
import SortableTree, { addNodeUnderParent, removeNodeAtPath,
getFlatDataFromTree,getTreeFromFlatData, } from 'react-sortable-tree';
function loadSkillsFromServer() {
console.log("Loading...");
let dbData = [];
$.ajax({
url: '/api/skills',
dataType: 'json',
cache: false,
success: function(data) {
//set the state with the newly loaded data so the display
//will update
dbData = data;
console.log("Loaded");
console.log(dbData);
}.bind(this),
error: function(xhr, status, err) {
console.error('/api/skills', status, err.toString());
}.bind(this)
});
return dbData;
}
const initialData = loadSkillsFromServer();
export default class Tree extends Component {
constructor(props) {...}
render() {...}
}
ご質問に関係しません。あなたの関数 'loadSkillsFromServer'は動作しません。 ajax呼び出しは非同期です。 '' dbData ;''が実行されると、ajaxはまだ実行されていません。それを動作させるには、あなたのajax呼び出しに 'async:false'を追加しなければなりません。 –
' url:... 'の前に' async:false'を追加する必要があります。 – edargham
注文は関係ありません。その前または後に動作するでしょう –