reactjs - React useState 等待状态被设置
问题描述
我正在将 React 组件转换为函数,但我不习惯 React useHooks。我已将以下内容从
handleRequestSort = (event, property) => {
const { orderBy, order } = this.state;
const isAsc = orderBy === property && order === "asc";
this.setState(
{
order: isAsc ? "desc" : "asc",
orderBy: property
},
this.getRows
);
};
至
function handleRequestSort(event, property) {
const isAsc = orderBy === property && order === "asc";
setOrder(isAsc ? "desc" : "asc");
setOrderBy(property);
getRows();
}
但问题是现在 getRows() 在 order 和 orderBy 状态设置之前运行,这搞砸了我的 getRows 功能
任何帮助都将是极大的欢呼。
解决方案
您可以使用 use-state-with-callback 库
https://www.npmjs.com/package/use-state-with-callback
import useStateWithCallback from 'use-state-with-callback';
const Index = () => {
const [orderState, setOrderState] = useStateWithCallback({}, (state) => {
const {orderBy, order} = state;
if(order && orderBy){
getRows()
}
})
const {orderBy, order} = orderState;
const handleRequestSort = (event, property) => {
const isAsc = orderBy === property && order === "asc";
setOrderState({
order : isAsc ? "desc" : "asc",
orderBy : property
})
}
return(...)
}
或者
import React, {useEffect, useState} from 'react';
const Index = () => {
const [orderState, setOrderState] = useState({});
const {orderBy, order} = orderState;
const handleRequestSort = (event, property) => {
const isAsc = orderBy === property && order === "asc";
setOrderState({
order : isAsc ? "desc" : "asc",
orderBy : property
})
}
useEffect(() => {
if(orderBy && order){
getRows()
}
},[orderState])
return (...)
}
推荐阅读
- android - android手动类型日期上的HTML日期选择器
- azure - 如何将 .app 文件从 Azure Pipeline 中的 .yml 文件部署到 Visual Studio App Center?
- .net - 尝试创建 Discord DM 时出现 SEHException
- javascript - 你好,我是初学者!我在如何停止我用 javascript 制作的倒计时有问题。你能帮我么
- reactjs - Create-react 应用程序与 django 后端与 babel 和 webpack 管道的集成
- swift - 在选取器中对齐视图
- excel - 从 Excel 中的系列中查找单元格内的值
- javascript - 模态不会与多个模态一起打开
- javascript - 需要替代 getElementByID 来通过 select onchange 事件更新文本框
- sql - 如何避免重新运行多次使用的子查询?