【发布时间】:2018-01-24 16:44:30
【问题描述】:
所以我有一个状态为bullet_points: [] 的字段,它是一个元素数组。
我的组件中有一个函数可以从这个数组中添加/删除元素。要保存更改,单击提交会将product: this.state 作为 POST 请求中的参数发送到我的后端。
如果数组不为空,后端只接收bullet_points。如果我清除所有元素的字段,它永远不会发送到后端。
这是什么原因造成的?下面是相关代码sn-ps。
1) 添加/删除元素的功能(注意箭头,这是删除元素的地方)
updateList(evt) {
evt.preventDefault();
let elements = this.state[evt.target.dataset.type];
let idx = parseInt(evt.target.dataset.index);
let new_element = evt.target.dataset.type == "durations" ? 30 : "";
if (isNaN(idx)) {
elements.push(new_element);
} else {
if (evt.target.dataset.delete) { <----------
elements.splice(idx, 1);
}
else {
elements[idx] = evt.target.value;
}
}
this.setState({ [evt.target.dataset.type]: elements });
}
2) POST 请求到后端
API.put(`coach/products/${this.props.params.id}`, {
product: this.state
}, function(res) {
this.closeModal();
Alert.success('<p class="small-body-text">Your changes have been saved</p>', {
position: "top-right",
effect: "scale",
timeout: 5000
});
}.bind(this));
【问题讨论】:
-
bullet_points 在哪里?我在您的代码中看不到这一点
-
在
this.state: {} -
this.state 在哪里?您的问题主要是关于 bullet_points 并且您的代码中缺少它本身。详细贴出来帮助你更好
-
为什么要向后端发送一个空数组?
标签: ruby-on-rails reactjs post state splice