編輯1減少不刪除正確的數組項
縮短了代碼
removeContentNew(i) {
var contents = this.state.templateContent;
contents.splice(i, 1);
this.setState({ templateContent: contents });
}
它可能有一些與此有關:
componentDidMount() {
this.setState({ templateContent: this.props.template.content });
}
還是關於刪除錯誤的一個屏幕。當我登錄狀態時,它確實給了我正確的數組。也許地圖有問題嗎?
-
我試圖bug修復這段代碼,但我似乎無法找到的錯誤。
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。每次按刪除其中一個項目的按鈕,它似乎總是刪除最後一個,而忽略其他項目。
我一直在做k
變量的一些測試,可能是問題的原因,但我不確定。
我對RegExp的做事方式真的很新穎。
任何想法如何解決這個問題?
你想要什麼你的正則表達式來測試你沒有任何安全?任何以內容開始並且後面跟着任何字符的值?或者任何以內容開頭的值跟一個點?我不認爲第二種方法是有道理的,因爲你得到對象中屬性的名稱,因爲點是一個訪問操作符k不會有點字符 – Raulucco
@Raulucco正則表達式已過時 - 請參閱編輯。我不知道爲什麼在這種情況下使用正則表達式... –
我不認爲你輸入了if語句,因爲'k'是一個屬性的名稱將不會有點字符。嘗試檢查'k ==='content'&& _.isObject(this.refs [k])&&〜_.isUndefined(this.refs [k] [i])' – Raulucco