如何使用通用功能更改反应状态

时间:2019-12-16 13:32:10

标签: reactjs

首先,我使用这种方式进行反应:

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;]
      ...
}

但这看起来很错误

0 个答案:

没有答案