Reactjs 尝试更新react组件中的single state属性时出现警告

Reactjs 尝试更新react组件中的single state属性时出现警告,reactjs,typescript,setstate,Reactjs,Typescript,Setstate,假设我们有一个简单的反应组件: import React, { Component } from 'react'; interface IState { a: boolean; b: string; c: number; } class Test extends Component<{}, IState> { state = { a: true, b: 'value', c: 7, }; handleClick = () =>

假设我们有一个简单的反应组件:

import React, { Component } from 'react';

interface IState {
  a: boolean;
  b: string;
  c: number;
}

class Test extends Component<{}, IState> {
  state = {
    a: true,
    b: 'value',
    c: 7,
  };

  handleClick = () => {
    this.setState({ a: false });
  };

  render() {
    const { a, b, c } = this.state;
    return (
      <div>
        {a && b + c}
        <button onClick={this.handleClick}>Click</button>
      </div>
    );
  }
}

export default Test;
  • this.setState({a:false}as IState)添加
    as IState
  • 每次执行
    setState
    this.setState({a:false}as IState)
  • 更新整个对象:
  • 但我想他们不是处理这件事的好方法。那么,处理这一恼人警告的最佳方式是什么? UPD:我发现我只在WebStorm中得到这个警告。在CodeSandbox和VSCode中没有警告


    issie是固定的。只需确保选择了
    TypeScript语言服务

    您真的要覆盖整个状态吗?我只想更新状态对象中的一个属性。如果您可以在代码库中共享一个示例,这会有所帮助。可能在。TypeScript和React的版本经历了很多更改,如果其他人能够在该上下文中更好地调试,它将帮助您获得更好的答案。
    setState
    设置状态,因此您可以覆盖整个对象。第五。选择是你应该选择的。
    Argument type {a: boolean} is not assignable to parameter type ((prevState: Readonly<IState>, props: Readonly<{}>) => (Pick<IState, keyof IState> | IState | null)) | Pick<IState, keyof IState> | IState | null
    
    interface IState {
      a: boolean;
      b: string;
      c: number;
    }
    
    this.setState(prevState => ({
          ...prevState,
          a: false,
        }));