Как в React вызвать обновление страницы?

107
08 июня 2019, 13:00

Имеется кусок кода на реакте. Там где звёздочки проблема. Состояние кнопки обновляется только при обновлении страницы. setState не совсем подходит, т.к. из мапы видно, что если использовать setState то приментся ко всем элементам. Какое решение может быть?

this.props.requestStore.requests.map(({id: request_id, state, book, user}) => (
    <tr key={request_id}>
        <td>
            <input type="button"
              value="Удалить"
              className="request-req-inp-del"
              onClick={() => this.delete(request_id)}
            />
            <input type="button"
              value="Одобрить"
              className="request-req-inp-app"
              onClick={() => this.approve(request_id)}
              disabled={**!book.state**}
            />
        </td>
        <td>{state ? "Запрос выполнен" : "На рассмотрении"}</td>
        <td>{book.title}</td>
        <td>{user.username}</td>
        <td>{user.bookGiven - user.bookTaken}</td>
    </tr>
)
Answer 1

Проблема оказалась на поверхности. Дело в том, что в своем Store я не додумался менять состояние в массиве. Происходила такая ситуация: кнопка нажималась, в бд изменения шли, но в массиве, который на фронте хранится в данный момент, я не менял состояние. Решение:

changeState(identity) {
        const request = this.requests.find(({id}) => id === identity);
        ...
        for (let obj of this.requests) {
            if (obj.book.id === request.book.id){
                obj.book.state = false;
            }
        }
        return request;
    }

Где,

request - текущая запись (в ней расположена кнопка), на которую была нажата кнопка;

identity - id этой записи, по которой можно было быотследить;

this.requests - массив записей для прохода;

obj.book.state - все записи, которые относятся к одной книге.

Также я немного изменил вызов массива, по которому проходил.

READ ALSO
Не понимаю почему не проходят тесты задачи?

Не понимаю почему не проходят тесты задачи?

Count the number of Duplicates Write a function that will return the count of distinct case-insensitive alphabetic characters and numeric digits that occur more than once in the input stringThe input string can be assumed to contain only alphabets (both uppercase...

114
mysql workbench no connection

mysql workbench no connection

Почему то перестал загружаться mysqlЕще вчера все было нормально

119
Учтека памяти из-за gif-ки

Учтека памяти из-за gif-ки

Это второй мой вопрос за сегодняОказалось (экспериментально подтвердилось), что утечка произодит из-за анимации

104
Баг с прокруткой

Баг с прокруткой

Суть проблемы в том что если перейти на любую другую вкладку в браузере а вкладку со скриптом не закрывать то когда возвращаешься на вкладку...

122