我使用ReactJS让我的用户动态生成表单,然后保存表单数据。因此,例如,他们可以有一个包含3个元素的表单(textarea,select字段和文本字段)。他们以任何他们想要的名称命名并输入值。这些字段标题和值使用
动态保存为状态setState({ [name]: value}).
这很好用。现在我想将所有这些状态转换为JSON并通过Ajax发送。但是,我不知道用户将这些状态命名为什么,所以我尝试了以下操作:
JSON.stringify({
"data": this.state
})
然而,这会引发错误'将循环结构转换为JSON',我猜测因为this.state还包括Object数据。
有没有办法让我通过Ajax发送所有状态而不知道所有状态的命名?
答案 0 :(得分:0)
即使不知道Object.keys()
的名字,你也可以遍历状态Object.keys(this.state).map((name) => {
console.log(this.state[name]);
});
答案 1 :(得分:0)
在表单上使用through:{
attributes: []
}
为您的表单创建表单对象,并在表单中发布所有值,如下所示
link(scope, element, attrs) {
scope.$watch(attrs.someAttrs, (newVal, oldVal) => {
if (newVal === true && newVal !== oldVal) {
$timeout(() => {
element
.focus()
.select();
});
}
});
},