Как получить результат поиска из forEach в объекте? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть приложение React с некоторыми данными JSON.У меня есть раскрывающееся меню, чтобы установить статус для работы в моем приложении.У меня есть состояние, называемое статусом, с загруженными состояниями с их идентификаторами, как показано ниже.

this.state.status: [
  {id: 1, name: 'To-do'},
  {id: 2, name: 'In-progress'},
  {id: 3, name: 'Completed'},
]

Когда вы меняете статус, выбирая пункт меню в раскрывающемся списке, мне нужно отправить идентификатор статуса в API.Поэтому я устанавливаю значение раскрывающегося списка с выбранным статусом, нахожу идентификатор статуса по имени статуса в объекте статуса и получаю конкретный идентификатор.Вот что я попробовал до сих пор. Проблема в том, что вызов API не может поймать идентификатор статуса.Консоль говорит, что «status_id не определен»

statusHandleChange = event => {
        const project_id = this.props.projectData.id;
        const job_id = this.props.projectData.currentJobId;

        this.setState({ currentStatus: event.target.value }, () =>
            Object.keys(this.state.status).forEach((key) => {
                if (this.state.status[key].name === event.target.value) {
                    const status_id = (this.state.status[key].id)
                }
            }),

            API.post('job/change_current_status', { project_id, job_id, status_id })
                .then(({ data }) => {
                    console.log("success!", data)
                })
                .catch((err) => {
                    console.log("AXIOS ERROR: ", err);
                })
        );

    };

ОШИБКА: «status_id» не определен!

1 Ответ

5 голосов
/ 22 апреля 2019

Поскольку вы определили status_id как константу в области блока внутри оператора if внутри функции - он недоступен за пределами этого оператора if.Вместо этого вы можете использовать find и Object.values с деструктуризацией (потому что forEach ничего не возвращает):

const { id: status_id } = Object.values(this.state.status).find(({ name }) => name === event.target.value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...