import Input from '../../input'; import React from 'react'; import ReactDOM from 'react-dom'; import Tab from '..'; interface IProps { defaultTitle: string; } interface IState { tabTitle: string; editable: boolean; } class EditableTabPane extends React.Component { constructor(props) { super(props); this.state = { tabTitle: props.defaultTitle, editable: false, }; } onKeyDown = e => { const { keyCode } = e; if (keyCode > 36 && keyCode < 41) { e.stopPropagation(); } }; onBlur = e => { this.setState({ editable: false, tabTitle: e.target.value, }); }; onDblClick = () => { this.setState({ editable: true, }); }; componentWillReceiveProps(nextProps) { if (nextProps.defaultTitle !== this.state.tabTitle) { this.setState({ tabTitle: nextProps.defaultTitle, }); } } // Stop bubble up the events of keyUp, keyDown, keyLeft, and keyRight render() { const { tabTitle, editable } = this.state; if (editable) { return ( ); } return {tabTitle}; } } const tabRender = (key, { title }) => (
); ReactDOM.render( Editable tab Editable tab , document.getElementById('tab-demo-13'), );