一次调用更多数据的setState或多次调用较少数据的setState效率更高?

时间:2019-06-07 03:44:58

标签: reactjs

(抱歉,标题上的措词不好...找不到合适的措词。)

我有一个方法,它会发出放置请求,然后更新状态。

在下面的示例中,key_in_state是具有唯一ID作为关键字的字典。它检查字典是否包含旧的响应数据。如果是这样,请更新该特定版本。

method_name = () => {
  let key_in_state_1 = { ...this.state.key_in_state_1 }
  let key_in_state_2 = { ...this.state.key_in_state_2 }

  axios.put( someurl )
    .then( res => {
      if ( key_in_state_1[ res.data._id ] ) {
        key_in_state_1[ res.data._id ] = res.data
      }
      if ( key_in_state_2[ res.data._id ] ) {
        key_in_state_2[ res.data._id ] = res.data
      }

      this.setState( {
        key_in_state_1,
        key_in_state_2
      } )

    } )
}

如上例所示,单次调用this.setState会更有效,还是在每个if语句中调用this.setState会更好,所以我们不需要重写状态是否没有新数据?

method_name = () => {
  let key_in_state_1 = { ...this.state.key_in_state_1 }
  let key_in_state_2 = { ...this.state.key_in_state_2 }

  axios.put( someurl )
    .then( res => {
      if ( key_in_state_1[ res.data._id ] ) {
        key_in_state_1[ res.data._id ] = res.data
        this.setState( { key_in_state_1 } )
      }
      if ( key_in_state_2[ res.data._id ] ) {
        key_in_state_2[ res.data._id ] = res.data
        this.setState( { key_in_state_2 } )
      }

    } )
}

有时响应不在词典中,因此我们甚至不需要更新它。

谢谢!

0 个答案:

没有答案