Поскольку вы привязываете все входные данные к одному свойству this.state.editTask
, при каждом его изменении все входные данные будут меняться, поскольку все входные атрибуты имеют свои атрибуты disabled
, связанные с {this.editTask}
.
* 1005.* Что вы можете сделать, так это то, что вы можете определить свойство
edit
в каждой задаче так же, как вы используете свойство
complete
для флажков.
См. Пример StackBlitz Iсоздан, чтобы увидеть, как он работает.
Т.е. tasks
будет:
[{
id: 1,
completed: true,
edit: true
}, {
id: 2,
completed: false,
edit: false
}, {
id: 3,
completed: true,
edit: true
}, {
id: 4,
completed: false,
edit: true
}, {
id: 5,
completed: true,
edit: false
}
]
И тогда вы можете связать HTML следующим образом:
<ul className="taskList">
<div className="tasksContainer">
{this.state.tasks.map(task => (
<div className="taskDiv" key={task.id}>
<input type="checkbox" checked={task.completed}/>
<input className='taskInput'
type="text"
content={task.text}
disabled={task.edit !== true}
/>
<button onClick={() => { this.editTask(task) }}>Редактировать</button>
</div>
))}
</div>
</ul>