所以這是多還是少的代碼競爭條件
很抱歉的語法,我從我的手機鍵入它
export default class Main extends React.Component {
componentDidMount() {
axios.get('/user?ID=12345')
.then(function (response) {
if (response){
document.addEventListener('load',() => {/* remove spinner using jquery */});
} else { /* redirect to somewhere else */}
})
}
render() {
return (
<SomeComponent />
);
}
}
我用的addEventListener有反應,因爲我做不到找到任何其他方式將加載微調器的刪除綁定到加載事件。
問題是,在這裏出現了一場競賽,對於網速較慢的站點或快速的CPU站點,負載事件可能會在請求解決很久之前啓動,導致加載微調器保持不變。
有沒有可能檢查加載事件是否已被啓動?
如果我能做到這一點,我將能夠在添加事件偵聽器後檢查它,並且如果它已經啓動,我將手動刪除微調器。
爲什麼使用jQuery的反應,而你可以簡單地setState? (這會觸發可以顯示或不顯示微調器的渲染方法)。我建議你閱讀[思考反應](https://reactjs.org/docs/thinking-in-react.html) – 3Dos
setState重新呈現組件,我想避免它。我認爲將加載微調器的顯示設置爲無比簡單得多。 –
但這不是問題 –