reactjs - useState 钩子和类型脚本的最佳实践
问题描述
我只是想知道当我有多个元素View
并且每个元素都有一些可以改变的状态时,什么会被认为是最佳实践。
单独为每个元素使用钩子会更好useState
,还是为整个屏幕创建一般状态并将其嵌套在其中的其他子状态会更好。
例如这样的:
interface InputTextState {
focused: boolean,
blurred: boolean,
value: string,
hasInvalidValue: boolean
}
interface AcceptButtonState {
enabled: boolean,
imgResource: string,
hasUserClicked: boolean
}
interface ComponentState {
inputState: InputTextState,
buttonState: AcceptButtonState
}
然后我会像这样使用它:
const [state, setState] = React.useState<ComponentState>()
当我需要更新时,我只会更新我需要的东西
setState(prevState => ({...prevState, inputState: {focused: true}))
对此的替代方法似乎会创建许多类似这样的状态:
const [isInputTextBlurred, setIsInputTextBlurred] = React.useState<boolean>(false)
const [isInputTextFocused, setIsInputTextFocused] = React.useState<boolean>(false)
.....
const [hasUserClickedAccept, setHasUserClickedAccept] = React.useState>boolean(false)
解决方案
推荐阅读
- helmfile - 在 helmfile.yaml 中表示 helm 图表 values.yaml
- laravel - Laravel8惯性vue如何本地化日期过滤器
- php - Laravel 8 API 返回 HTML 而不是 JSON
- python - Pandas:创建带有条件的新列
- python - 什么是 tkinter 中的事件循环
- ruby-on-rails - 嵌套资源的编辑路径抛出错误缺少必需的键:[:id]
- reactjs - 如何解析 React Js 中的最小和最大日期输入?
- arrays - 如何从数组中删除以特定字符结尾的所有字符串
- r - 如何在自定义管道中实现点占位符?
- mysql - MySql - 如何为单个选择列分配不同的别名,由 case 语句确定