これは私の最初の投稿です。 私はtodoアプリを作成中です。 プラスのボタンをクリックすると、私のアプリはタスクリストに新しいタスクを追加しています。少数のクリックでは簡単なタスクはほとんどありませんでしたが、問題は各タスクがアイコンを削除してしまいました。そのアイコンの属するアイコンが表示されます。ここで react.js少数のレンダリングされたコンポーネントのうちの1つを削除する
はApp.jsコードclass App extends React.Component {
constructor(props){
super(props);
this.handleDelete = this.handleDelete.bind(this);
this.addTask = this.addTask.bind(this);
this.state = {taskNum: 0,
delete: false
}
}
addTask(){
this.setState({
taskNum: this.state.taskNum +1,
delete:false
});
}
handleDelete(e){
console.log(e.target);
this.setState({delete: true});
}
render() {
const tasks = [];
for (let i = 0; i < this.state.taskNum; i += 1) {
tasks.push(!this.state.delete && <Task key={i} number={i} deleteTask={this.handleDelete}/>);
};
return (
<div className="ui container content">
<h2 className="centerHeader header">TODO LIST</h2>
<h3 className="taskheader secondaryHeader">Tasks <Icon className="addNew plus" action={this.addTask}/></h3>
<div className="ui container five column grid taskList">
{tasks}
</div> ...
であり、ここであるTask.js
export class Task extends React.Component {
constructor(props){
super(props);
this.dataChanged = this.dataChanged.bind(this);
this.state ={message: 'TASK' + (this.props.number+1),
}
}
customValidateText(text) {
return (text.length > 0 && text.length < 31);
}
dataChanged(data) {
console.log(data.message);
this.setState({message: data.message});
}
render(){
const centerRow = classNames('textCenter', 'row');
return (<div className="ui column task">
<div className={centerRow}><InlineEdit
validate={this.customValidateText}
activeClassName="editing"
text={this.state.message}
paramName="message"
change={this.dataChanged}
style={{
background: 'inherit',
textAlign:'center',
maxWidth: '100%' ,
display: 'inline-block',
margin: 0,
padding: 0,
fontSize: '1em',
outline: 0,
border: 0
}}
/></div>
<div className={centerRow}><Icon className="browser outline huge center"/> </div>
<div className={centerRow}><Icon className="large maximize"/><Icon className="large save saveTask"/><Icon className="large trash outline" action={this.props.deleteTask} /></div>
</div>
);
私はe.targetとはparentNodeを選択しようと考えたが、私はthatsのかどうかわからないです適切な解決策を使用して以来、私はこの問題のための効率的な解決策を見つけることができますのでごみ箱のアイコンをクリックすると親コンポーネントだけが削除されます。
を説明する行が意味するはずのApp状態で 'DELETE'は何ですか?コメントで私はあなたのコード内のいくつかの変更をしましたか特定のタスクを削除済みとしてマークするために、タスク状態にすることを意味しませんでしたか? – helb
ええ、私が意味していること – Jake11