关于react中setState后,没有立即获取到最新的state中的值

searchRecomon (item) {
    this.setState({
      searchVal: item,
      searchCategoryId: 0,
      sortType: 1,
      priceSortStatus: 0
    })
    console.log(item)
    console.log(this.state.searchVal)
  }
 /*查询商品*/
  async searchGoods () {
    const {searchVal, sortType, page, size, priceSortStatus, searchCategoryId} = this.state
    const {data, filterCategory} = await http.getGoodsData({
      keyword: searchVal,
      page,
      size,
      sort: sortType === 1 ? 'id': 'price',
      order: priceSortStatus > 0 ? 'asc': priceSortStatus === 0 ? 'default' : 'desc',
      categoryId: searchCategoryId
    })
    this.setState({goodsList: data,searchKeyWordList: [], searchCategoryList: filterCategory})
    this.getInitData()
在searchGoods方法里面并没有直接获取到最新的searchVal的值。解决方法:
 searchRecomon (item) {
    this.setState({
      searchVal: item,
      searchCategoryId: 0,
      sortType: 1,
      priceSortStatus: 0
    }, () => {
      this.searchGoods()
    })
    console.log(item)
    console.log(this.state.searchVal)
  }
在setState值后,里面传个回调函数作为参数

2、理解setState

推荐阅读更多精彩内容

  • ES6 http://es6.ruanyifeng.com 目录 1 let 和 const 命令 2 变量的解构...
    常青1890阅读 5,678评论 0 41
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 4,177评论 1 15
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 5,787评论 0 13
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 962评论 0 5
  • 说在前面 关于 react 的总结过去半年就一直碎碎念着要搞起来,各(wo)种(tai)原(lan)因(le)。心...
    陈嘻嘻啊阅读 4,301评论 6 35