#reactjs
#reactjs
Вопрос:
В настоящее время у меня есть функция addToProduction. Это перебирает данные и возвращает новый объект с идентификаторами и базами данных. Обработчик изменений на флажке в настоящее время отображает все значения, однако я хочу иметь возможность регистрировать правильный идентификатор и базу данных из правильной строки, а не все значения. Затем это будет сохранено и добавлено к массиву databaseChanges при нажатии.
Комментарии:
1. Вы хотите
addToProduction
что- то сделать с измененным значением флажка или просто узнать, какой флажок был изменен по его идентификатору? Можете ли вы немного более четко указать, что вы хотитеaddToProduction
сделать с конкретным флажком?2. Я просто хочу знать, какой флажок был изменен по его идентификатору. Спасибо!
3. таким образом, он будет знать, какой checkboc был изменен по его идентификатору, а затем добавит его в конец массива databaseChanges .
Ответ №1:
Вы можете получить идентификатор из объекта onChange
события.
const addToProduction = e => {
const { id } = e.target;
... // do whatever with id
console.log(id)
}
И прикрепите идентификатор теста к атрибуту флажка id
<Checkbox
mainColor
changeHandler={addToProduction}
data={{}}
id={test.id} // <-- attach id to checkbox
/>
Редактировать
Передайте весь test
объект обработчику curried для добавления объекта в массив. Функция curried принимает test
объект и возвращает функцию, которая будет использоваться в качестве обратного вызова (теперь игнорирует объект event, но вы можете принять это, если вам что-то от него нужно).
const addToProduction = test => () => {
const { databases, id } = test;
console.log(databases, id)
// append `{ id, databases }` to databaseChanges array
}
…
<Checkbox
mainColor
changeHandler={addToProduction(test)}
data={{}}
/>
Комментарии:
1. большое спасибо! Как я могу это сделать, чтобы включить базу данных?
2. @bloombloom Это связано с
databaseChanges
массивом в вашем фрагменте? Вы сказали, что вам нужен идентификатор, чтобы вы могли добавить что- то в конец этого массива, но на самом деле вы ничего больше не указали. Я предположил, что вы обработали сторону базы данных, поскольку она упоминается в вашем сообщении. Что вам нужно включить?3. Спасибо Дрю, по сути, так же, как test.id был зарегистрирован, в нем также будет зарегистрирован test.database.
4. В этом случае я предлагаю передать
test
объект обработчику. Я обновлю решение. Как создаетсяdatabaseChanges
экземпляр и обновляется? Это что-то в состоянии локального компонента? Родительское состояние? Что и где это?5. Изменения базы данных — это объект, который имеет все идентификаторы тестов и базы данных из родительского состояния, которое находится в unitTestDatamap, оно обновляется при добавлении нового идентификатора / базы данных.