Как получить значение по умолчанию для выпадающего ввода в реагировать - PullRequest
1 голос
/ 24 сентября 2019

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

<BrInput
    type="select"
    name="altPayableInd"
    id="altPayableInd"
    options={altPayableIndOpt}
    default={payableResp.payable[index] && payableResp.payable[index].altPayableInd.value && this.setDefaultValue(payableResp.payable[index] && payableResp.payable[index].altPayableInd.value, altPayableIndOpt)}
/>
setDefaultValue = (value, options) => {
    let matchedLabel = options.find(el => el.value === value);
    if (value !== "O") {
        this.setState({ viewReason: false })
    }
    return [{ value, label: matchedLabel.label }]
}

ошибка:

Невозможно обновить во время существующего перехода состояния (например, в пределах render).Методы рендеринга должны быть чистой функцией реквизита и состояния.

1 Ответ

0 голосов
/ 24 сентября 2019

В идеале, вы должны использовать только get методы, когда вы устанавливаете prop значения в render.

В setDefaultValue вы используете setState, который становится недействительным, это то, что выошибка говорит. Вы должны перенести это в какую-то другую логику .Чтобы все работало как есть, используйте как это: (здесь комментируется код, просто чтобы показать часть ошибки, вы можете удалить это)

setDefaultValue = (value, options) => {
    let matchedLabel = options.find(el => el.value === value);
    // if (value !== "O") {
    //     this.setState({ viewReason: false }) // you can't use setState in render
    // }
    return [{ value, label: matchedLabel.label }]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...