ReactJS更改嵌套状态的值

时间:2017-12-29 18:12:52

标签: reactjs

我有一个表单,其中输入具有初始值(每个输入都不同)。我通过将数据保存在状态数组中来设置值,如下所示:

Error: Could not find or load main class $JAVA_OPTS

一旦用户开始在输入字段中输入内容,我需要在相应的数组中更改相关状态的值,但是,我无法正确定位所述状态。

这就是我目前正在做的事情:

$.ajax({
    url: "/character/hats",
    type: "GET",
    dataType: "html",
    success: function (data) {
        $(".card > .card-body .col-md-4").each(function(){
        let hatdata=$(data).find('pull-left').html;
        let hatid=0;
        $("body").prepend('<p>found!</p><div>'+hatdata+'</div>');
        let assetcode=0;
        console.log("I see hat id" + "");
    }
});

(注意:值是新值,target是索引)

但是,它不起作用,因为当我 function createData(header, content) { id += 1; return {header, content, id}; } class ExampleForm extends React.Component { constructor(props) { super(props); this.state = { data : [ createData( Header1, Content1), createData( Header2, Content2), createData( Header3, Content3), ] } 新值时,它仍会返回旧值。

我还在这里阅读了其他几个问题(借助于我在改变值的函数中编写了我现在正在做的代码的代码),然而,这不起作用。 我读过的其他问题包括React: Update nested state?,但是,我无法弄清楚他们从哪里获得handleInputChange = (value, target) => { const selectedArray = {...this.state.data[target]}; selArray.header = value; this.setState(selArray); }; } 。有谁知道我当前的代码中我做错了什么?我该如何解决?

1 个答案:

答案 0 :(得分:1)

像这样更新状态:

// .hpp 

#pragma once

template <typename T, size_t rows, size_t cols>
class Matrix {
private:
    constexpr size_t m_size = rows * cols;
    std::array<T, m_size> m_arr;
public:
    __forceinline Matrix();
};

Matrix::Matrix() : m_arr() { // this gives errors
    // do ctor stuff
}

要检查更新的状态值,请使用回调方法,如下所示:

handleInputChange = (value, target) => {
    const data = [...this.state.data];
    data[target].header = value;
    this.setState({ data });
};

有关setState的asyn行为的更多详细信息,请查看以下答案:Why calling setState method doesn't mutate the state immediately?