Преглед изворни кода

success swiching activetab but not perfect

kaoritokashiki пре 5 година
родитељ
комит
632bd13329

+ 7 - 15
src/client/js/components/PageAccessoriesModal.jsx

@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React from 'react';
 import PropTypes from 'prop-types';
 import PropTypes from 'prop-types';
 
 
 import {
 import {
@@ -17,8 +17,7 @@ import PageContainer from '../services/PageContainer';
 
 
 const PageAccessoriesModal = (props) => {
 const PageAccessoriesModal = (props) => {
   const { t } = props;
   const { t } = props;
-  // Prevent unnecessary rendering
-  const [activeComponents, setActiveComponents] = useState(new Set(['']));
+
 
 
   function closeModalHandler() {
   function closeModalHandler() {
     if (props.onClose == null) {
     if (props.onClose == null) {
@@ -27,14 +26,6 @@ const PageAccessoriesModal = (props) => {
     props.onClose();
     props.onClose();
   }
   }
 
 
-  function toggleActiveTab(activeTab) {
-    console.log(activeTab);
-
-    setActiveComponents(activeComponents.add(activeTab));
-    console.log(activeComponents);
-  }
-
-
   return (
   return (
     <React.Fragment>
     <React.Fragment>
       <Modal
       <Modal
@@ -47,7 +38,7 @@ const PageAccessoriesModal = (props) => {
           <Nav className="nav-title border-bottom">
           <Nav className="nav-title border-bottom">
             <NavItem className={`nav-link ${props.activeTab === 'pageList' && 'active'}`}>
             <NavItem className={`nav-link ${props.activeTab === 'pageList' && 'active'}`}>
               <NavLink
               <NavLink
-                onClick={() => { toggleActiveTab('pageList') }}
+                onClick={() => { props.toggleTab('pageList') }}
               >
               >
                 <PageList />
                 <PageList />
                 { t('page_list') }
                 { t('page_list') }
@@ -55,7 +46,7 @@ const PageAccessoriesModal = (props) => {
             </NavItem>
             </NavItem>
             <NavItem className={`nav-link ${props.activeTab === 'timeLine' && 'active'}`}>
             <NavItem className={`nav-link ${props.activeTab === 'timeLine' && 'active'}`}>
               <NavLink
               <NavLink
-                onClick={() => { toggleActiveTab('timeLine') }}
+                onClick={() => { props.toggleTab('timeLine') }}
               >
               >
                 <TimeLine />
                 <TimeLine />
                 { t('Timeline View') }
                 { t('Timeline View') }
@@ -63,7 +54,7 @@ const PageAccessoriesModal = (props) => {
             </NavItem>
             </NavItem>
             <NavItem className={`nav-link ${props.activeTab === 'recentChanges' && 'active'}`}>
             <NavItem className={`nav-link ${props.activeTab === 'recentChanges' && 'active'}`}>
               <NavLink
               <NavLink
-                onClick={() => { toggleActiveTab('recentChanges') }}
+                onClick={() => { props.toggleTab('recentChanges') }}
               >
               >
                 <RecentChanges />
                 <RecentChanges />
                 { t('History') }
                 { t('History') }
@@ -71,7 +62,7 @@ const PageAccessoriesModal = (props) => {
             </NavItem>
             </NavItem>
             <NavItem className={`nav-link ${props.activeTab === 'attachment' && 'active'}`}>
             <NavItem className={`nav-link ${props.activeTab === 'attachment' && 'active'}`}>
               <NavLink
               <NavLink
-                onClick={() => { toggleActiveTab('attachment') }}
+                onClick={() => { props.toggleTab('attachment') }}
               >
               >
                 <Attachment />
                 <Attachment />
                 { t('attachment_data') }
                 { t('attachment_data') }
@@ -100,6 +91,7 @@ PageAccessoriesModal.propTypes = {
   isOpen: PropTypes.bool.isRequired,
   isOpen: PropTypes.bool.isRequired,
   onClose: PropTypes.func,
   onClose: PropTypes.func,
   activeTab: PropTypes.string.isRequired,
   activeTab: PropTypes.string.isRequired,
+  toggleTab: PropTypes.string.isRequired,
 };
 };
 
 
 export default withTranslation()(PageAccessoriesModalWrapper);
 export default withTranslation()(PageAccessoriesModalWrapper);

+ 17 - 2
src/client/js/components/TopOfTableContents.jsx

@@ -18,12 +18,26 @@ const TopOfTableContents = (props) => {
 
 
   const [isPageAccessoriesModalShown, setIsPageAccessoriesModalShown] = useState(false);
   const [isPageAccessoriesModalShown, setIsPageAccessoriesModalShown] = useState(false);
   const [activeTab, setActiveTab] = useState('');
   const [activeTab, setActiveTab] = useState('');
+  // Prevent unnecessary rendering
+  const [activeComponents, setActiveComponents] = useState(new Set());
+
 
 
   function openPageAccessoriesModal(activeTab) {
   function openPageAccessoriesModal(activeTab) {
     setIsPageAccessoriesModalShown(true);
     setIsPageAccessoriesModalShown(true);
     setActiveTab(activeTab);
     setActiveTab(activeTab);
   }
   }
 
 
+  function toggleActiveTab(clickedTab) {
+    activeComponents.add(clickedTab);
+    setActiveComponents(activeComponents);
+
+    setActiveTab(clickedTab);
+
+    console.log(`clickedTab is ${activeTab}`);
+    console.log(`activeComponents are ${activeComponents}`);
+  }
+
+
   function closePageAccessoriesModal() {
   function closePageAccessoriesModal() {
     setIsPageAccessoriesModalShown(false);
     setIsPageAccessoriesModalShown(false);
   }
   }
@@ -32,9 +46,10 @@ const TopOfTableContents = (props) => {
     return (
     return (
       <>
       <>
         <PageAccessoriesModal
         <PageAccessoriesModal
-          isOpen={isPageAccessoriesModalShown}
-          onClose={closePageAccessoriesModal}
+          isOpen={isPageAccessoriesModalShown} //
+          onClose={closePageAccessoriesModal} // 関数
           activeTab={activeTab}
           activeTab={activeTab}
+          toggleTab={toggleActiveTab}
         />
         />
       </>
       </>
     );
     );