1
我在做反應組件。我有funtion裏面常見的Ajax調用:如何更改函數內部的狀態
getPost = (postName, storage) => {
this.setState({fetchInProgress: true})
$.ajax({
url: "/api/getitems",
type: "GET",
dataType: 'json',
ContentType: 'application/json',
data: {modelName: postName},
success: (data) => {
this.setState({
storage: data,
fetchInProgress: false
})
},
error: (jqXHR) => {
this.setState({fetchInProgress: false})
console.log('ERRORR')
}
})
}
我這樣稱呼它:
this.getPost('StandartPost', this.state.standartPosts)
但它好好嘗試的工作。我有很多不同類型的帖子。現在我用開關做了這個:
success: (data) => {
switch(postName){
case: 'StandartPost'
this.setState({
standartPosts: data,
fetchInProgress: false
})
...and so on
}
}
這裏我沒有使用我的函數的第二個參數。但是也有太多的代碼。有沒有辦法做到這一點是這樣的:
success: (data) => {
this.setState({
storage: data,
fetchInProgress: false
})
}
this.getPost('StandartPost', this.state.standartPosts)
UPD:我只是試圖用this.state.something作爲this.setState方法中的一個關鍵:
this.setState({
this.state.data: data,
fetchInProgress: false
})
好,它什麼也沒做。 this.state.data仍然是一個空數組。
UPD2:我已經做了我的Ajax調用如下:
success: (data) => {
this.state[storage] = data
this.setState({
fetchInProgress: false
})
,並調用這樣的功能的getPost(postName,存儲):
this.getPost('StandartPost', 'standartPosts')
,它工作正常。我沒有找到一種方法來設置setState方法中的數據。但至少有更少的代碼。
如果有什麼錯誤,你會得到什麼? – topher
我沒有任何錯誤,也沒有在我的服務器中或在反應組件中。但是我的組件不提供任何數據。 –
創建一個componentDidUpdate(prevState){}和console.log都prevState.standartPosts和this.state.standartPosts來檢查問題是否是你的setState(){}不改變狀態 –