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)
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,
}));