Browse Source

fix #255: Refrect changes to page view after saving with `Ctrl-S`

Yuki Takei 8 years ago
parent
commit
7cfad25fe0
2 changed files with 14 additions and 8 deletions
  1. 8 5
      resource/js/app.js
  2. 6 3
      resource/js/components/Page.js

+ 8 - 5
resource/js/app.js

@@ -74,11 +74,6 @@ if (isEnabledPlugins) {
   crowiPlugin.installAll(crowi, crowiRenderer);
   crowiPlugin.installAll(crowi, crowiRenderer);
 }
 }
 
 
-// for PageEditor
-const onSaveSuccess = function(page) {
-  crowi.getCrowiForJquery().updateCurrentRevision(page.revision._id);
-}
-
 /**
 /**
  * define components
  * define components
  *  key: id of element
  *  key: id of element
@@ -131,6 +126,14 @@ const previewOptions = new PreviewOptions(crowi.previewOptions);
 // render PageEditor
 // render PageEditor
 const pageEditorElem = document.getElementById('page-editor');
 const pageEditorElem = document.getElementById('page-editor');
 if (pageEditorElem) {
 if (pageEditorElem) {
+  // create onSave event handler
+  const onSaveSuccess = function(page) {
+    // modify the revision id value to pass checking id when updating
+    crowi.getCrowiForJquery().updateCurrentRevision(page.revision._id);
+    // re-render Page component
+    componentInstances.page.setMarkdown(page.revision.body);
+  }
+
   pageEditor = ReactDOM.render(
   pageEditor = ReactDOM.render(
     <PageEditor crowi={crowi} pageId={pageId} revisionId={pageRevisionId} pagePath={pagePath}
     <PageEditor crowi={crowi} pageId={pageId} revisionId={pageRevisionId} pagePath={pagePath}
         markdown={markdown}
         markdown={markdown}

+ 6 - 3
resource/js/components/Page.js

@@ -18,7 +18,6 @@ export default class Page extends React.Component {
   }
   }
 
 
   componentWillMount() {
   componentWillMount() {
-    console.log('componentWillMount');
     this.renderHtml(this.props.markdown, this.props.highlightKeywords);
     this.renderHtml(this.props.markdown, this.props.highlightKeywords);
   }
   }
 
 
@@ -27,8 +26,12 @@ export default class Page extends React.Component {
   }
   }
 
 
   componentWillReceiveProps(nextProps) {
   componentWillReceiveProps(nextProps) {
-    console.log('componentWillReceiveProps');
-    this.renderHtml(this.props.markdown, this.props.highlightKeywords);
+    this.renderHtml(nextProps.markdown, nextProps.highlightKeywords);
+  }
+
+  setMarkdown(markdown) {
+    this.setState({ markdown });
+    this.renderHtml(markdown, this.props.highlightKeywords);
   }
   }
 
 
   /**
   /**