Reactjs 如何更改函数内部的状态
我正在做反应组件。我在函数中有一个常见的ajax调用:Reactjs 如何更改函数内部的状态,reactjs,Reactjs,我正在做反应组件。我在函数中有一个常见的ajax调用: getPost = (postName, storage) => { this.setState({fetchInProgress: true}) $.ajax({ url: "/api/getitems", type: "GET", dataType: 'json', ContentType: 'application/json', dat
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) => {
this.setState({
storage: data,
fetchInProgress: false
})
}
this.getPost('StandartPost', this.state.standartPosts)
this.getPost('StandartPost', 'standartPosts')
但它不起作用。我有很多不同类型的帖子。现在,我用开关做了这件事:
success: (data) => {
switch(postName){
case: 'StandartPost'
this.setState({
standartPosts: data,
fetchInProgress: false
})
...and so on
}
}
这里我没有使用函数的第二个参数。但也有太多的代码。有没有办法做到这一点:
this.getPost('StandartPost', this.state.standartPosts)
success: (data) => {
this.setState({
storage: data,
fetchInProgress: false
})
}
this.getPost('StandartPost', this.state.standartPosts)
this.getPost('StandartPost', 'standartPosts')
UPD:我刚刚尝试使用this.state.something作为此.setState方法中的键:
this.setState({
this.state.data: data,
fetchInProgress: false
})
嗯,它什么也没做。this.state.data仍然是空数组
UPD2:我在ajax调用中完成了以下操作:
success: (data) => {
this.state[storage] = data
this.setState({
fetchInProgress: false
})
并调用函数getPostpostName,如下所示:
this.getPost('StandartPost', this.state.standartPosts)
success: (data) => {
this.setState({
storage: data,
fetchInProgress: false
})
}
this.getPost('StandartPost', this.state.standartPosts)
this.getPost('StandartPost', 'standartPosts')
而且效果很好。我无法在setState方法中设置数据。但至少代码更少。。您应该只在构造函数中直接分配状态
使用时,可以将变量包装在方括号中,将其设置为对象键,如下所示:
this.setState({
[storage]: data,
fetchInProgress: false
});
如果没有,您可以创建一个新对象,比如newState,并将其传递到setState:
如果有的话,您会得到什么错误?我的服务器和ByReact组件中都没有任何错误。但是我的组件不呈现任何数据。创建一个componentDidUpdateprevState{}和console.log,同时记录prevState.standartPosts和this.state.standartPosts,以检查问题是否在于设置状态{}未更改状态。它向我显示一个空数组。我想我不允许在这个.setState方法中使用this.state.something作为键值。这不是一个错误,但它不起任何作用。是的,你可以,我一直用它来改变切换的布尔值,这不是问题所在