У меня есть состояние, в котором содержится список элементов и флажков, которым по умолчанию присваивается значение false или true (в зависимости от API, с которым я работаю).
Для простоты скажем, что у меня такое состояние.
state = {
list: [
{
id: 0,
name: 'item1'
assigned: true
}
],
dirtyList: []
}
Когда флажок установлен, вы нажимаете кнопку, и во всплывающем окне указывается, был ли элемент зарегистрирован или удален (флажок имеет значение true / false). Но допустим, что вы запускаете страницу с уже установленным флажком, а затем дважды щелкаете по нему (снова проверяя его на истинность), во всплывающем окне не следует указывать, что элемент был зарегистрирован, поскольку исходное состояние не изменилось. (Оно перешло от true
, false
, затем обратно к true
)
Вот мой флажок handleChange function
checkboxChanged = (event, id) => {
let isChecked = event.target.checked
const index = this.state.list.findIndex(list => list.id === id)
const newState = [...this.state.list]
let newList = { ...newState[index] }
console.log(newList)
// By console logging this, it eventually tells me the previous state of the item that was clicked
newState[index].assigned = isChecked
this.setState({
list: newState,
})
}
Мне трудно понять, как / где я могу обновить состояние 'dirtyList'
, потому что только тогда я могу сравнить исходное состояние с грязным.