您需要將標籤存儲在組件狀態中,以便在發生事件時更改它。
class Link extends Component {
constructor() {
this.state = {
label: 'New Tab', // default label
edit: false, // default editing mode
};
// bind your component methods
this.renderEdit = this.renderEdit.bind(this);
this.changeLabel = this.changeLabel.bind(this);
this.renderLabel = this.renderLabel.bind(this);
this.changeEdit = this.changeEdit.bind(this);
}
/*
* render a form, that changes the label
* change the editing mode, when submitting
*/
renderEdit() {
return (
<form onSubmit={this.changeEdit(false)}>
<input
type="text"
value={this.state.label}
onChange={this.changeLabel}
/>
</form>
);
}
changeLabel(e) {
this.setState({ label: e.target.value }); // change label
}
renderLabel() {
return (
<a
class="nav-link"
data-toggle="tab"
href="#NewTab4"
aria-expanded="false"
onDoubleClick={this.changeEdit(true)}
>
{this.state.label}
</a>
);
}
/*
* return a function for your events, that changes the editing mode
*/
changeEdit(edit) {
return e => {
e.preventDefault();
this.setState({ edit });
}.bind(this);
}
render() {
return state.state.edit ? this.renderEdit() : this.renderLabel();
}
}
你的問題我不清楚.. – Ved