【问题标题】:How to change state by passing parameter to setState() [duplicate]如何通过将参数传递给 setState() 来更改状态 [重复]
【发布时间】:2018-08-11 01:32:21
【问题描述】:

我有十几个输入组件。当其中一些没有通过验证时,它会得到相应的属性“invalidInputName = true”和类“hasError”。

当用户再次开始输入这些输入时,我需要通过将“invalidInputName”更改为 false 来删除“hasError”。我想编写函数 clearValidation() 女巫将接受参数名称并将其更改为 false。

class ExchangeForm extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            paymentAmountValidation: false,
            invalidAccountNum: false,
            invalidPhone: false,
            invalidCheck: false
        }
    }

    // this function toogles input to normal state.
    // I want to pass the name of property which i want to reset 
    // For example: clearValidation('invalidPhone') must work as
    // this.setState({ ...this.state, invalidPhone: false }).
    // But best i've done was { property: propery:false } :(
    // I have to change this.state only with setState()
    clearValidation(property){
        this.setState({ ...this.state, property })
    }

    validation(){
        //it toogles state properties to true if found any error
    }
}

有可能吗?

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:
    clearValidation(property) {
        this.setState({
            [property]: false
        }
    }
    

    有关详细信息,请参阅property accessors docs 的括号符号部分。

    【讨论】:

    • 作为一个愚蠢的初中生唯一的好处就是每天都能对简单的事情产生惊人的见解:) 非常感谢,你为我节省了很多时间!
    猜你喜欢
    • 2023-02-10
    • 2023-01-18
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2017-09-04
    相关资源
    最近更新 更多