编辑1
将代码缩短为
removeContentNew(i) {
var contents = this.state.templateContent;
contents.splice(i, 1);
this.setState({ templateContent: contents });
}
可能与这个有关:
componentDidMount() {
this.setState({ templateContent: this.props.template.content });
}
仍在屏幕上删除错误的内容。当我记录状态时,它确实给出了正确的数组。也许是地图有问题?
--
我正在尝试调试这段代码,但似乎找不到错误。
removeContent(i) {
var $formgroup = false;
const regex = new RegExp('^content.', 'i'),
contents = _.reduce(_.keys(this.refs), (memo, k) => {
if (regex.test(k) && k !== 'content.' + i) {
var $formgroup = $(this.refs[k]);
if (this.props.customer.getSetting('wysiwyg_enabled', true)) {
var html = CKEDITOR.instances['html_' + i].getData();
} else {
var html = $formgroup.find('[name="html"]').val();
}
memo.push({
subject: $formgroup.find('[name="subject"]').val(),
html: html,
text: $formgroup.find('[name="text"]').val(),
language: $formgroup.find('[name="language"]').val()
});
}
return memo;
}, []);
this.setState({ templateContent: contents });
}
i
是我想从数组templateContents
中删除的项的ID。每次我按一个项目的remove按钮时,它似乎总是删除最后一个并忽略其他的。我一直在测试变量
k
,它可能是问题的原因,但我不确定。我真的很新 RegExp 的编程方式。
有什么想法可以解决这个问题吗?
k === 'content' && _.isObject(this.refs[k]) && ~_.isUndefined(this.refs[k][i])
。 - Rauluccosplice()
要么获取最后一个项目,要么获取-1。你说状态正确更新了,但是array.map
没有?你在哪里使用array.map
?请检查您发送到函数的参数i
。 - Mamdouh Alsarayreh