【问题标题】:How to get default value of dropdown input in reactjs如何在reactjs中获取下拉输入的默认值
【发布时间】:2020-01-24 03:40:48
【问题描述】:

我正在尝试获取下拉输入字段的默认值,因为我将它用于添加和更新。下面是我的代码

<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 内)。渲染方法应该是 props 和 state 的纯函数。

【问题讨论】:

  • 错误是不言自明的。好像您在更新组件状态的渲染方法中调用 setDefaultValue 。尝试提供默认的“值”并将“onChange”处理程序添加到您的下拉列表中。

标签: javascript reactjs ecmascript-6 jsx


【解决方案1】:

理想情况下,当您在render 中设置prop 值时,您应该只使用get 方法。

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 }]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多