From 255f47fe56a1f9db2ca669aff1d9bd9cdde5dd8b Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Fri, 11 Jun 2021 11:05:28 +0300 Subject: fix infinite loop --- src/components/rich_content/rich_content.jsx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/components/rich_content/rich_content.jsx') diff --git a/src/components/rich_content/rich_content.jsx b/src/components/rich_content/rich_content.jsx index 8972c494..f7fa4dce 100644 --- a/src/components/rich_content/rich_content.jsx +++ b/src/components/rich_content/rich_content.jsx @@ -42,7 +42,7 @@ export default Vue.component('RichContent', { // NEVER EVER TOUCH DATA INSIDE RENDER render (h) { // Pre-process HTML - const { newHtml: html, lastMentions } = preProcessPerLine(this.html, this.greentext, this.hideLastMentions) + const { newHtml: html, lastMentions } = preProcessPerLine(this.html, this.greentext, this.hideMentions) const firstMentions = [] // Mentions that appear in the beginning of post body const lastTags = [] // Tags that appear at the end of post body const writtenMentions = [] // All mentions that appear in post body @@ -187,6 +187,13 @@ export default Vue.component('RichContent', { return item } + // DO NOT USE SLOTS they cause a re-render feedback loop here. + // slots updated -> rerender -> emit -> update up the tree -> rerender -> ... + // at least until vue3? + const result = + { convertHtmlToTree(html).map(processItem).reverse().map(processItemReverse).reverse() } + + const event = { firstMentions, lastMentions, @@ -195,12 +202,6 @@ export default Vue.component('RichContent', { writtenTags } - const result = - { this.$slots.prefix } - { convertHtmlToTree(html).map(processItem).reverse().map(processItemReverse).reverse() } - { this.$slots.suffix } - - // DO NOT MOVE TO UPDATE. BAD IDEA. this.$emit('parseReady', event) -- cgit v1.2.3-70-g09d2