首先,我使用这种方式进行反应:
const [state, setState] = useState<State>({
value1: false,
value2: false,
value3: [],
value4: [],
value5: [],
value6: 0,
...
}
由于许多问题与useCallbacks结合使用... 我更改为以下代码:
const [value1, value2] = React.useState<boolean>(false);
...
现在,我面临另一个问题:使用通用函数现在无法再更改子组件中的值。在状态组件中获得所有值之前,我可以使用以下通用函数,该函数已传递给子组件:
function changeMainState(newState: any): void {
const newStateTemp = Object.assign({...state}, newState);
setState(newStateTemp as Pick<State, keyof State>);
}
但是现在有了const值,我不能再使用此泛型函数了。但是我有很多值,并且希望避免将每个setter传递给子组件。
是否可以以通用方式设置const值,而避免将数百个setter函数传递给子组件?
一种可能的方法是编写如下函数:
function changeMainState(newState: any, whichValue: string): void {
switch (whichValue) {
case value1:
setValue(newState):
[break;]
case value2:
setValue2(newState);
[break;]
...
}
但这看起来很错误