将所有动态状态发送到JSON

时间:2017-12-14 11:40:44

标签: javascript reactjs

我使用ReactJS让我的用户动态生成表单,然后保存表单数据。因此,例如,他们可以有一个包含3个元素的表单(textarea,select字段和文本字段)。他们以任何他们想要的名称命名并输入值。这些字段标题和值使用

动态保存为状态
setState({ [name]: value}).

这很好用。现在我想将所有这些状态转换为JSON并通过Ajax发送。但是,我不知道用户将这些状态命名为什么,所以我尝试了以下操作:

JSON.stringify({
    "data": this.state
})

然而,这会引发错误'将循环结构转换为JSON',我猜测因为this.state还包括Object数据。

有没有办法让我通过Ajax发送所有状态而不知道所有状态的命名?

2 个答案:

答案 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();
            });
            }
        });
    },