Skip to content

Commit de898f6

Browse files
authored
Merge pull request #4 from fergarrui/fix-evm-tab-rerender
fix evm tab
2 parents 17a5025 + fc788e3 commit de898f6

File tree

5 files changed

+32
-42
lines changed

5 files changed

+32
-42
lines changed

src/client/components/EVMState/main.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@ import { connect } from 'react-redux';
33

44
import styles from '../../styles/EVMState.scss';
55

6-
// const mapStateToProps = state => {
7-
// return {
8-
// evm: state.selectEVMState,
9-
// }
10-
// }
11-
12-
const ConnectedEVMState = ({ evm }) => {
6+
const EVMState = ({ evm }) => {
137

148
return (
159
<div className={styles['evm-state']}>
@@ -89,9 +83,6 @@ const ConnectedEVMState = ({ evm }) => {
8983
)
9084
}
9185

92-
93-
const EVMState = connect()(ConnectedEVMState);
94-
9586
EVMState.displayName = 'EVMState';
9687

9788
export default EVMState;

src/client/components/EVMTab/EVMTab.js

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,39 +14,32 @@ class EVMTab extends React.Component {
1414
}
1515
}
1616

17+
componentDidUpdate(prevProps) {
18+
if(prevProps.data != this.props.data) {
19+
this.setState({
20+
currentTabIndex: 0
21+
});
22+
}
23+
}
1724
setActiveTab(index) {
1825
this.setState({
1926
currentTabIndex: index,
2027
});
2128
}
2229

23-
handleIconClick(event, index) {
24-
event.stopPropagation();
25-
26-
const { data } = this.props;
27-
28-
this.setState({
29-
currentTabIndex:
30-
index === data.length - 1 && index === this.state.currentTabIndex ? 0
31-
: index === this.state.currentTabIndex ? index
32-
: this.state.currentTabIndex,
33-
});
34-
35-
this.props.onMenuItemIconClick(index);
36-
}
37-
3830
render() {
39-
const { data } = this.props;
31+
const { data, children } = this.props;
4032
const { currentTabIndex } = this.state;
4133

42-
console.log(data)
34+
const currentTab = React.Children.toArray(children).filter((child, i) => i === currentTabIndex);
4335

4436
return (
4537
<div className={styles['tab']}>
4638
<div className={styles['tab__navigation']}>
4739
{data.map((item, i) => {
4840
return (
4941
<TabMenuItem
42+
evm={true}
5043
key={`id--${item.gas}`}
5144
name={i + 1}
5245
active={currentTabIndex === i}
@@ -55,15 +48,7 @@ class EVMTab extends React.Component {
5548
)
5649
})}
5750
</div>
58-
{ data.map((item, i) => {
59-
return (
60-
<EVMTabPanel
61-
key={`id--${item.gas}`}
62-
active={currentTabIndex === i}
63-
evmData={item} />
64-
)
65-
})
66-
}
51+
{currentTab}
6752
</div>
6853
);
6954
}

src/client/components/EVMTab/EVMTabPanel.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ import styles from '../../styles/Tab/InnerTabPanel.scss';
88

99
const cx = classnames.bind(styles);
1010

11-
const EVMTabPanel = ({ active, evmData }) => {
11+
const EVMTabPanel = ({ children }) => {
1212

1313
const tabPanelClasses = cx({
1414
'inner-tab-panel': true,
15-
'inner-tab-panel--active': !!active,
15+
'inner-tab-panel--active': true,
1616
});
1717

1818
return (
1919
<div className={tabPanelClasses}>
20-
<EVMState evm={evmData} />
20+
{children}
2121
</div>
2222
)
2323
}

src/client/components/Tab/TabMenuItem/main.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import styles from '../../../styles/Tab/TabMenuItem.scss';
88

99
const cx = classnames.bind(styles);
1010

11-
const TabMenuItem = ({ name, title, onClick, active, onIconClick }) => {
11+
const TabMenuItem = ({ name, title, onClick, active, onIconClick, evm }) => {
1212

1313
const classes = cx({
1414
'tab-menu-item': true,
@@ -18,7 +18,9 @@ const TabMenuItem = ({ name, title, onClick, active, onIconClick }) => {
1818
return (
1919
<div className={classes} onClick={onClick}>
2020
<div onClick={onIconClick} className={styles['tab-menu-item__icon']}>
21-
<Icon iconName='Cross' />
21+
{
22+
!evm && <Icon iconName='Cross' />
23+
}
2224
</div>
2325
<div className={'tab-menu-item__text'}>
2426
<span>{name ? name : title}</span>

src/client/components/Tab/TabPanel/main.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import InnerTab from '../../InnerTab/main.js';
99
import Modal from '../../Modal/main.js';
1010
import Hamburger from '../../Hamburger/main.js';
1111
import EVMTab from '../../EVMTab/EVMTab';
12+
import EVMTabPanel from '../../EVMTab/EVMTabPanel';
13+
import EVMState from '../../EVMState/main';
1214

1315
import styles from '../../../styles/Tab/TabPanel.scss';
1416

@@ -269,7 +271,17 @@ class ConnectedTabPanel extends React.Component {
269271
<Editor code={code} index={index} />
270272
{
271273
evm &&
272-
<EVMTab data={evm} />
274+
<EVMTab data={evm}>
275+
{
276+
evm.map(item => {
277+
return (
278+
<EVMTabPanel key={`id--${item.gas}`}>
279+
<EVMState evm={item} />
280+
</EVMTabPanel>
281+
)
282+
})
283+
}
284+
</EVMTab>
273285
}
274286
</div>
275287
</div>

0 commit comments

Comments
 (0)