【发布时间】:2021-05-26 02:30:53
【问题描述】:
我正在努力解决反应承诺问题。我想我需要能够在 axios .then 函数之外的 for 循环中使用状态长度。目前,当我用数值替换 LEN 时,下面的代码可以工作,但如果我尝试使用 label.length 则无法工作,因为在调用 for 循环时该值不存在。任何人都可以建议处理这个问题的最佳方法吗? 我的代码很粗糙,因为我是 js 新手并做出反应。
export default function App() {
const [label, setLabel] = useState([]);
const handle = useFullScreenHandle();
const [data, setData] = useState([]);
const token = fetch('token');
const headers = {
'X-CSRF-Token': token,
'Authorization': 'Basic '+btoa('cred')
}
React.useEffect(() => {
axios
.get("url", {
headers: headers
})
.then(result => {
setLabel(Object.keys(result.data).map(key => result.data[key].title));
setData(Object.keys(result.data).map(key => result.data[key].nid));
len=label.length
});
}, []);
console.log(length)
for (let i = 0; i < **LEN**; i++) {
i = Number(i)
lab = label[i];
dat = data[i];
var stri = ({id:String(i), category: 'cat', label:"String(i)"+i});
//JSON.stringify({artist: artist, title : title});
nodes.push (stri);
var ed = ({id:String(i),source:String(i),target:String(i+1),label:i});
edges.push(ed);
}
var datada = ({nodes: nodes, edges:edges});
let element =
<>
<Sigma graph={datada}></Sigma>
return element
</>
}
【问题讨论】:
标签: reactjs axios es6-promise