Reactjs 如何更改函数内部的状态

Reactjs 如何更改函数内部的状态,reactjs,Reactjs,我正在做反应组件。我在函数中有一个常见的ajax调用: getPost = (postName, storage) => { this.setState({fetchInProgress: true}) $.ajax({ url: "/api/getitems", type: "GET", dataType: 'json', ContentType: 'application/json', dat

我正在做反应组件。我在函数中有一个常见的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) => {
             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作为键值。这不是一个错误,但它不起任何作用。是的,你可以,我一直用它来改变切换的布尔值,这不是问题所在