javascript - 在数组上设置状态在 native react 中不起作用?

标签 javascript arrays reactjs react-native

我真的很抱歉我发布了这个,因为它听起来很疯狂。 我得到了一种方法来验证我在模态内的表单中的一些输入。

所以我检查每个 this.state.variable 并推送到辅助数组,然后将其设置为原始 fieldErrors 数组。

但由于某些原因,当我在设置前检查aux时,长度为5。 设置为 fieldErrors 后,我注意到长度为 0。这是怎么回事?

代码如下:

_validateMissingFields: function() {
    var aux = [];

    if (this.state.variable1.length === 0) {
        aux.push('variable1');
    }

    if (this.state.variable2.length === 0) {
        aux.push('variable2');
    }

    if (this.state.variable3.length === 0) {
        aux.push('variable3');
    }

    if (this.state.variable4.length === 0) {
        aux.push('variable4');
    }

    if (this.state.variable5.length === 0) {
        aux.push('variable5');
    }

    console.log(aux.length) // -> shows 5
    this.setState({ fieldErrors: aux });
}

稍后,当我在此方法之后执行 this.state.fieldErrors.length 时,显示 0。

顺便说一句,这就是我初始化 fieldErrors 的方式:

getInitialState: function() {
    return {
        variable1: '',
        variable2: '',
        variable3: '',
        variable4: '',
        variable5: '',
        fieldErrors: []
    }
},

最佳答案

React setState 是异步的,这就是为什么不能立即读取 this.state 的原因。

有关更多信息,请参阅文档 https://facebook.github.io/react/docs/react-component.html#setstate

关于javascript - 在数组上设置状态在 native react 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43927457/

相关文章:

javascript - 如何将 SVG 图像动态插入到 HTML 中?

javascript - react : Big Calendar Font Style

python - 以数组形式打开图像

reactjs - 在 React.js 中,使用 flexGrow 时得到错误的 clientHeight

node.js - Express js 路由 404 错误仅在产品中

javascript - ajax发送动态创建的输入框的值

javascript - 调用 alert() 和 sqrt() 的方式有何不同?

javascript - 如何在 JavaScript 中合并两个对象数组,并对重复对象键的值求和?

c++ - 在 C++ 中初始化静态常量数组的特定元素

javascript - 在文本框中禁用空格键 - React - JavaScript