我无法在打字稿中使用动态键名设置状态

时间:2019-07-12 13:34:09

标签: reactjs typescript

我定义了React组件的状态接口,如下所示。

path/to/opt -load /path/to/MyLibrary.dylib -Pass3 ...

在文本输入更改事件中,我尝试使用动态键设置状态,如下所示。

CMakeLists.txt

但是VSCode向我显示此错误

interface IState {
    email: string,
    password: string,
    errors: object
}

任何建议都将受到欢迎。

2 个答案:

答案 0 :(得分:2)

问题在于,e.target.name应该是IState的键,而e.target.value应该是IState中键的相对类型,要解决这个问题,您可以手动强制转换< / p>

this.setState({
            [e.target.name]: e.target.value
    } as Pick<IState, keyof IState>);

但是它禁用此功能的打字稿,您也可以将其转换为任何类型,但这是不安全的。

看起来像this的答案也可能对您有帮助

最好的选择是使用ReduxForm

答案 1 :(得分:0)

我们还可以执行以下操作:

  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
    const name = e.target.name as keyof typeof this.state;

    this.setState({ ...this.state, [name]: e.target.value });
  };