我有一个表单,其中输入具有初始值(每个输入都不同)。我通过将数据保存在状态数组中来设置值,如下所示:
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);
};
}
。有谁知道我当前的代码中我做错了什么?我该如何解决?
答案 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?