Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React-如何为setState使用参数_Javascript_Reactjs_Ecmascript 6_Setstate - Fatal编程技术网

Javascript React-如何为setState使用参数

Javascript React-如何为setState使用参数,javascript,reactjs,ecmascript-6,setstate,Javascript,Reactjs,Ecmascript 6,Setstate,我有一个奇怪的问题,现在我正在尝试学习react,我有一个登录表单,如下所示: this.state = { loginInputs: [ { type: 'text', id: 'loginForUser', label: 'User', key: 'user', value: '', error: ''

我有一个奇怪的问题,现在我正在尝试学习react,我有一个登录表单,如下所示:

this.state = {
          loginInputs: [
        {
            type: 'text',
            id: 'loginForUser',
            label: 'User',
            key: 'user',
            value: '',
            error: ''
        },
        {
            type: 'password',
            id: 'loginForPassword',
            label: 'Password',
            key: 'pass',
            value: '',
            error: ''
        }
    ]
}
我映射每个输入并在组件中渲染它

另外,如果在单击登录或注册按钮时输入为空,则我想从状态更新数组,并创建一个可用的函数:

    const isInvalidInput = (inputValue) => inputValue.length < 2;

    updateError = (array) => {
    const updatedArray = [...array];
    updatedArray.forEach((input, index) => {
        if(isInvalidInput(input.value)) {
            updatedArray[index] = { ...input, error: 'errrrrrrorrrrrrrr'}
        }
    });
    alert("yeee");
    this.setState({
        [array]: updatedArray
    });
     console.log(updatedArray);
}
问题是,当我让字段为空并按下按钮时,函数被调用,但setState不起作用,数组中的错误仍然为空。有人能帮我吗


谢谢您的时间:)

兄弟,不用自己检查长度,而是使用可供输入的minLength属性。此外,您的验证也不会让它为您自己添加。去接收关于Regrex JavaScript的信息,这样您就可以使用Pattern属性了。这将避免您使用if语句进行验证,并使代码干净。 检查这个


您可以克隆项目并查看它

能否尝试将此.setState更改为以下-

this.setState({
    loginInput: updatedArray
});

谢谢,但这并不能解决我的问题:)关于react的
setState
函数,有很多很多堆栈溢出问题。你研究过其中哪一个,为什么他们没有解决你的问题?我会试试这个,谢谢,我会提供反馈:)如果你能向我们展示你的问题,那会更好…但是如果我写这个,更新数组没有定义,因为它来自一个函数,我想在每次需要显示错误时都使用该函数,而不仅仅是在loginhandlerif中,如果是这样,则不必在
updateError
中写入setState,而是从函数返回updateArray,并在调用函数中返回setState。它可以工作,谢谢:)
this.setState({
    loginInput: updatedArray
});