React useState 修改值之后,如何获取到最新的值

2021-09-03 13:56:38 +08:00
 17681880207

页面上有一个 radio group,点击 radio 按钮之后,重新获取 table 数据。 在 setModule 之后,需要立马重新获取表格数据,但是发现 module 值是老的。

let [module, setModule] = useState('1')

const changeModule = (e) => {
  setModule(e.target.value)
  getTableData ()
  console.log('module :', module) // 此时,发现 module 的值是老的
}

const getTableData = async () => {
  const params = {}
  Object.assign(params, {
    moduleId: module
  })
  // 此时的 moduleId 发现是老的值,而不是新点击的值
  const r = await axios.get('/get-table-data', params)
}

<Radio.Group 
  options={[
    {label: 'option1', value: '1'}, 
    {label: 'option2', value: '2'},
    {label: 'option3', value: '3'},
    {label: 'option4', value: '4'}
  ]}
  value={module} 
  onChange={changeModule}/>

各位大神,应该如何处理?

2673 次点击
所在节点    程序员
24 条回复
coolcoffee
2021-09-03 23:17:17 +08:00
@flybluewolf useReducer 操作异步方便吗?
guoliim
2021-09-04 18:18:44 +08:00
setState 是 批处理
还是 要再看一下 官方文档吧
dengshen
2021-09-05 00:53:58 +08:00
嗯!千人千面。我用 vue/doge
DOLLOR
2021-09-05 22:18:40 +08:00
把 getTableData 拎到组件外面,以参数形式把 module 传给 getTableData,并以返回值把请求的数据传回组件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799659

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX