【发布时间】:2020-07-24 20:16:03
【问题描述】:
大家好,我是使用 React Hooks 的新手,但无法直接在 google 上找到它。我正在尝试嵌套 setState 回调,以便状态可以同步更新,但由于我得到未定义的值而没有成功。状态中的值依赖于我状态中的其他值,所以我希望它同步运行。我尝试将它嵌套在下面,当它是一个类组件并使用 this.setState 并使用回调时,它可以工作,但是当我尝试在功能类中使用反应挂钩时它不起作用。
这是我的代码:
const [state, setState] = useState({numCols: 0, numRows: 0, cardWidth: 0, cardHeight: 0, containerWidth: 0});
const {
sheetList,
sheetsTotalCount,
sheetsMetadata,
id,
projectId,
onEditButtonClick,
handleInfiniteLoad,
sheetsAreLoading,
classes,
permissions,
onItemClick,
} = props;
const setCardSize = ({ width }) {
setState({
containerWidth: width > 0 ? width : defaultWidth
},() => {
setState({numCols: Math.max(Math.floor(state.containerWidth / baseThumbnailWidth), 1) }, () => {
setState({numRows: Math.ceil(sheetList.size / state.numCols)}, () => {
setState({cardWidth: Math.floor(state.containerWidth / state.numCols - 2 * marginBetweenCards)}, () => {
setState({cardHeight: Math.round(state.cardWidth * thumbnailProportion)});
});
});
});
});
}
理想情况下,我希望首先更新 containerWidth 变量,然后是 numCols 变量,然后是 cardWidth,然后是 cardHeight。有什么方法可以同步执行此操作,这样我就不会得到未定义的值?
【问题讨论】:
标签: reactjs react-hooks use-state