使用setState更改状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用setState更改状态相关的知识,希望对你有一定的参考价值。

我试图让setState没有运气。这是以下代码

class test extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      invalid: null,
    };
  }

  boolTest = () => {
    this.setState({ invalid: true });
  };

  // ...
}

这就是我在表单字段中调用函数的方式

invalid={this.boolTest}

这是错误输出

错误:属性“invalid”必须为true,false或null;得到“未定义”(未定义)

警告:只能更新已安装或安装的组件。这通常意味着您在已卸载的组件上调用了setState,replaceState或forceUpdate。这是一个无操作。

答案

boolTest是一个实际上不会返回您可以使用的值的函数。你真的想做:

invalid={this.state.invalid}

或者作为一个更清晰的例子:

const { invalid } = this.state;

return (
  <>
    <Button onClick={this.boolTest}
    <Component invalid={invalid} />
  </>
)

以上是关于使用setState更改状态的主要内容,如果未能解决你的问题,请参考以下文章

使用setstate更改状态

setState 更改状态但不重新渲染

如何使用 getProps 和 setState 更改 Gatsby Link 文本

调用 React Setstate 回调但延迟渲染

从其他组件更改状态(不通过 setState 函数)

React拓展 - setState - 路由组件懒加载 - Hooks - Fragment - Context - PureComponent - 插槽 - 错误边界 - 组件通信方式总结(代码片