У меня есть список пользователей в таблице, и для каждого пользователя у меня есть несколько кнопок действий, таких как просмотр, редактирование. Когда я нажимаю кнопку просмотра, на сервер отправляется запрос на получение сведений о пользователе. Поэтому я хочу добавить спиннер вместо текста внутри кнопки. Я использую загрузчик спиннер внутри кнопки. Но мой код добавляет счетчик всем пользователям в таблице. То есть все кнопки просмотра вращаются одновременно при нажатии кнопки просмотра.
Я использую состояние для поддержания счетчика. Если данные выбираются, состояние viewInProgress имеет ложное значение. Состояние передается как реквизит компоненту таблицы. Я использую это для всех кнопок.
const rows = teacherList.map((teacher, i) => ({
teacherName: teacher.get('fullName'),
email: teacher.get('email'),
action: (
<span key={i}>
{this.props.viewInProgress ? (
<button className="btn btn-primary btn-sm" type="button" disabled>
<span
className="spinner-border spinner-border-sm"
role="status"
aria-hidden="true"
></span>
Loading...
</button>
) : (
<button
className="btn btn-sm btn-primary"
onClick={() => onViewClick(teacher.get('id'))}
>
View
</button>
)}
{type === TableType.PENDING && (
<span>
<button
className="btn btn-sm btn-success"
onClick={() => this.onAllocateClick(teacher.get('id'))}
>
Allocate subject
</button>
</span>
)}
{type === TableType.APPROVED && (
<span>
<button
className="btn btn-sm btn-danger"
onClick={() => this.onRemove(teacher.get('id'))}
>
Remove
</button>
{this.state.editInProgress ? (
<button className="btn btn-dark btn-sm" type="button" disabled>
<span
className="spinner-border spinner-border-sm"
role="status"
aria-hidden="true"
></span>
Loading...
</button>
) : (
<button
className="btn btn-sm btn-dark"
onClick={() => this.onEditClick(teacher.get('id'))}
>
Edit
</button>
)}
</span>
)}
</span>
),
}));
![All action button](https://i.stack.imgur.com/Rr3wC.png)
Если я нажму на кнопку просмотра, эту конкретную кнопку следует заменить на спиннер. Но в моем случае все кнопки просмотра заменяются кнопкой вращения. Как я могу решить проблему? ![After click any view button all are spinning simultaneously](https://i.stack.imgur.com/SV9rK.png)