当前位置: 首页 > 知识库问答 >
问题:

React本机设置状态不一致[重复]

白光耀
2023-03-14

在这里,我的状态在使用setState后不会更新。log在大多数情况下显示默认值。为什么setState不一致?

export default class Row extends Component {
  constructor(props) {
    super(props);

    // icons to listview (arrow icon)
    this.icons = {
      up: require("../../assets/ic_play_circle_down.png"),
      down: require("../../assets/ic_play_circle_up.png")
    };

    this.state = {
      title: props.title,
      // getting screen size (width and height)
      let: ({ width, height } = Dimensions.get("window")),

      // collapsed check the listview expanded or not if it is true: list view not expanded
      collapsed: true,

      isApproved: false,
      comment: "dummy comment"
    };
  }
  acceptApproval = () => {
    this.setState({ isApproved: true });
    console.log("Approved TICK " + this.state.isApproved);
    this.verifyApprovals();
  };

  regectApproval = () => {
    this.setState({ isApproved: false });
    console.log("Approved" + this.state.isApproved);
    this.verifyApprovals();
  };

共有1个答案

巢安澜
2023-03-14

正如您所知,setState是异步的,您应该调用第二个函数作为对setState的回调

this.setState({ isApproved: true }, function(){
   this._setApproval(true)
  });

  };
_setApproval(){
console.log("Approved TICK " + this.state.isApproved);
    this.verifyApprovals();
}

  regectApproval = () => {
    this.setState({ isApproved: false } , function() {
    this._setRejection();
});

  };

_setRejection() {
console.log("Approved" + this.state.isApproved);
    this.verifyApprovals();
}
 类似资料:
  • 从输入字段中,我将值作为参数发送给设置状态的函数。我有多个输入字段,所以希望使用它们的名称(等于它们的状态键),然后使用相同的函数,并将键和值传递给设置状态的函数。 这是我的代码。

  • 我正在使用React-useState创建状态为的对象。在成功调用API后,将更新为数据对象。 我有一个表单可以更改此状态,但我还有一个取消按钮。单击“取消”时,如何将此状态恢复为其初始值(API调用后)? 我应该创建另一个状态变量和存储初始状态在那里,然后更新我的状态基于?

  • 我目前在react native中有一个函数,它执行以下操作: 我运行上述命令,可以确认arrayId和title变量有效并包含数据。arrayId也不是“selectProduct”。我在调试时在那里添加了一个console.log,以确保它运行,事实上确实如此。我期望的行为是状态立即更新。 但是,所选下拉列表的状态不会更新。在this.setState更新之后添加:console.log(th

  • 我在一个三元组中使用了< code>this.setState(),并试图找出它返回的内容。文档没有提供任何关于它返回什么的信息。

  • 我有2个选择国家输入,我想重置默认占位符时,重置一个表单内的所有状态。我使用了2个状态变量来存储国家,我得到了一个重置我的状态的函数,但是选择输入不重置为默认值。它将在最后选定的国家/地区保持选中状态。我将状态重置为空,但无法使其工作。你能帮我一下吗? 这是我的选择组件,如果我在它上使用值选项,它崩溃,我不能改变国家保留在占位符默认消息。 更新 值选项在其中崩溃,因为它需要接收和对象的值和标签像这

  • 问题内容: 作为升级JRun的一部分,我们正在从1.4 JVM迁移到1.6 JVM。现在,我收到一个非常奇怪的oracle db错误:“ OALL8处于不一致状态”。我已经解决了插入根本不使用绑定变量的查询的问题- 所有内联参数。如果我在没有任何绑定变量的情况下运行查询,则会收到上述错误。一旦我用绑定变量替换了一个硬编码值,一切都会正常工作。 另一个奇怪的地方是,在执行查询之后,它实际上已提交给数