用 setState 改变状态

Posted

技术标签:

【中文标题】用 setState 改变状态【英文标题】:Changing state with setState 【发布时间】:2019-07-19 11:34:48 【问题描述】:

我试图让 setState 工作但没有运气。这是下面的代码

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

    this.state = 
      invalid: null,
    ;
  

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

  // ...

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

invalid=this.boolTest

这是错误输出

错误:属性“无效”必须为真、假或空;得到“未定义” (未定义)

警告:只能更新已安装或已安装的组件。这通常 表示您在一个 未安装的组件。这是无操作的。

【问题讨论】:

您将boolTest 函数赋予invalid 属性。这真的是你想要的吗?也许你应该把它交给 onChange 道具或类似的东西,只是为了实验。 我相信是的。 “无效”是我正在使用的表单组件的属性。我将尝试 onChange。 【参考方案1】:

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

invalid=this.state.invalid

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

const  invalid  = this.state;

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

【讨论】:

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

Flutter:状态类:为啥不在 setState 方法调用之前改变状态变量,而不是在 setState 方法中

React 的setState 理解

我可以改变传递给 setState 函数的状态吗?

react中setState为何使用不可变值

即使状态没有改变,为啥 setState 会导致太多的重新渲染错误

手动改变 React 的状态,然后调用 setState